# HG changeset patch # User Dirk Olmes # Date 1550090967 -3600 # Node ID 2156317e4779cc9c40c7f330993cdcbb66393dd3 # Parent 6dc02dba2c17ea925bfe5091f7768b32c995ed94 new blog post diff -r 6dc02dba2c17 -r 2156317e4779 content/Maven/deploying-files.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/Maven/deploying-files.md Wed Feb 13 21:49:27 2019 +0100 @@ -0,0 +1,31 @@ +Title: Deploying files with maven-deploy-plugin +Date: 2019-02-11 +Lang: en + +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: + +* my-lib-1.0.jar +* my-lib-1.0.pom +* my-lib-1.0-sources.jar +* my-lib-1.0-tests.jar +* my-lib-1.0-test-sources.jar + +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. + +The `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 `classifiers` and `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.