Deploying files with maven-deploy-plugin11.02.2019 by Dirk Olmes
We recently had an outage of our Nexus instance at work. The file system went corrupt, nexus would not start up properly complaining about a corrupted Orient DB.
The blob store was largely left intact. In hindsight I should have tried to rebuild the OrientDB from the blob store using the Repair - Reconcile component database from blob store task. I found out too late while I already had recovered half of our releases from my local maven repository.
I went down the more difficult route of re-uploading artifacts from my local Maven repo into Nexus. While you can upload single artifacts through Nexus’ web GUI this approach did not scale. Instead, I used the
maven-deploy-plugin to upload. Each of our artifacts comes with source accompanied, most expose also tests and test sources. So basically an artifact consists of these files:
All these files need to be uploaded together at once. It took me a little while to understand how to build the commandline for the deploy plugin to accomplish this.
file parameter takes the main jar. The
pomFile paramenter taks the pom file. That’s easy. The other files have to be specified using a more convoluted format. Each file name has to specify its classifier and its type, appended to the separate
types lists. Finally the
files list must specify the full file names. A look at the example will make more sense:
mvn deploy:deploy-file \ -Dmaven.repo.local=/tmp/maven-repo \ -Durl=http://nexus.local/repository/releases \ -DrepositoryId=releases \ -Dfile=my-lib-1.0.jar \ -DpomFile=my-lib-1.0.pom \ -Dclassifiers=sources,tests,test-sources \ -Dtypes=jar,jar,jar \ -Dfiles=my-lib-1.0-sources.jar,mylib-1.0-tests.jar,my-lib-1.0-test-sources.jar
You may have noticed that I’m specifying a separate local repository to use during the upload. This is because Maven refuses to upload artifacts from the repo it’s currently operating on. Simply using a throw-away temporary local repo helps minimize the amount of fiddling around with local files.
There are no comments yet.