3
votes

can we use project.build.finalName in the command line options of the mvn deploy:deploy-file goal.

here is my command:

mvn deploy:deploy-file -DgroupId=abc -Dproject.build.finalName=test -DartifactId=test -Dversion=1.0 -Dpackaging=jar -Dfile="file_path" -Durl=url -DrepositoryId=id`

the details are : first, there is no POM file available.

i am just executing this command to upload the artifact in nexus.

now the issue is , the artifact being uploaded has the name as : ${artifactId}-${version}

and i dont want version in the finalname. i have alrady gone through the couple of posts and found that we can use project.build.finalName

but in this case , it is still uploading with version number. how can i fix that ?

1
You can't cause that is the based naming rule in a Maven repository....khmarbaise
In my case I wanted to add revision number at the end of file name and I achieved it using -Dclassifier=${BUILD_NUMBER}. Just in case anyone else looking for the same.adev

1 Answers

2
votes

You need to drop the -Dproject.build.finalName part and add -DgeneratePom=true instead, as you're already specifying the full path to the artifact via the -Dfile.

You cannot not have the version part when deploying to a Maven remote repository (which is what you're trying to do). When deploying to a Maven repository, your artifact's GAV (groupId, artifactId, version, type and classifier) coordinates will get translated into:

${groupId}/${artifactId}/${version}/${artifactId}-${version}.jar

For example, for these GAV-s:

groupId    : com.foo
artifactId : bar
version    : 1.2.3-SNAPSHOT
type       : jar
classifier : [null, javadoc, sources]

You will get a path like:

com/foo/bar/1.2.3-SNAPSHOT/bar-1.2.3-SNAPSHOT.jar
com/foo/bar/1.2.3-SNAPSHOT/bar-1.2.3-SNAPSHOT-javadoc.jar
com/foo/bar/1.2.3-SNAPSHOT/bar-1.2.3-SNAPSHOT-sources.jar

The -Dproject.build.finalName is for cases, where you'd like the artifact to have a different name so that, (for example), your build process can use that for simplicity, or convenience.

If you're deploying using deploy-file and have no pom.xml file, your command-line should look something like this:

mvn deploy:deploy-file \
    -DgroupId=com.foo \
    -DartifactId=bar \
    -Dversion=1.2.3-SNAPSHOT \
    -Dpackaging=jar \
    -Dfile="path\to\foo-1.2.3-SNAPSHOT.jar" \
    -Durl=http://the-url-to-your-repository/ \
    -DrepositoryId=the-repository-id-defined-in-your-settings.xml-that-has-your-credentials