Uploading artifacts to Archiva with webdav
Archiva natively supports webdav to upload artifacts on a managed repository.
Pre-requisites
- Create a managed repository
- Add to a user the Manager Role for this repository
- Then you'll need to tell maven's settings.xml file about your username and password (this file belongs in ~/.m2):
<settings> <servers> <server> <id>YOUR_REPO_ID</id> <username>USERNAME</username> <password>PASSWORD</password> </server> </servers> </settings>
- Below we suppose that you defined two repositories, one for releases (YOUR_REPOSITORY_FOR_RELEASES_ID, YOUR_REPOSITORY_FOR_RELEASES_URL) and one for snapshots (YOUR_REPOSITORY_FOR_SNAPSHOTS_ID, YOUR_REPOSITORY_FOR_SNAPSHOTS_URL)
Maven 1.x
Upload third party artifact
- This feature isn't yet supported by the artifact plugin. We'll had it ASAP.
Upload project's artifact
- The webdav protocol isn't yet supported by the artifact plugin. It's quite easy to had (And I already succeded to do it). I'll commit the change and publish a snapshot soon....
- Sample of settings :
# Repository to deploy to #maven.repo.list=YOUR_REPOSITORY_FOR_SNAPSHOTS_ID #maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID=dav:YOUR_REPOSITORY_FOR_RELEASES_URL #maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID.directory=/ # These must be set elsewhere #maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID.username= #maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID.password= # Repository to deploy snapshots #maven.repo.YOUR_REPOSITORY_FOR_SNAPSHOTS_ID=dav:YOUR_REPOSITORY_FOR_SNAPSHOTS_URL #maven.repo.YOUR_REPOSITORY_FOR_SNAPSHOTS_ID.directory=/ #maven.repo.YOUR_REPOSITORY_FOR_SNAPSHOTS_ID.username=${maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID.username} #maven.repo.YOUR_REPOSITORY_FOR_SNAPSHOTS_ID.password=${maven.repo.YOUR_REPOSITORY_FOR_RELEASES_ID.password}
Maven 2.x
Upload third party artifact
Maven 2.0.x does not yet natively support the webdav protocol to upload artifacts. See http://jira.codehaus.org/browse/MNG-2664 for more information.
Meanwhile, you can use a simple pom.xml file containing the wagon-webdav build extension, as described here: http://maven.apache.org/archiva/guides/getting-started/maven-configuration.html
And then deploy your artifact:
mvn deploy:deploy-file \ -DrepositoryId=<YOUR_REPO_ID> \ -Durl=dav:<YOUR_REPO_URL> \ -DgroupId=<GROUP_ID> \ -DartifactId=<ARTIFACT_ID> \ -Dversion=<VERSION> \ -Dpackaging=<PACKAGING> \ -Dfile=<FILE_PATH>
or (note that pomFile is pom that goes with the artifact, not the simple one mentioned above.)
mvn deploy:deploy-file \ -DrepositoryId=<YOUR_REPO_ID> \ -Durl=dav:<YOUR_REPO_URL> \ -DpomFile=<POM_FILE_PATH>\ -Dfile=<FILE_PATH>
Upload project's artifact
You need to tell the <build> section about the Wagon WebDAV plugin:
<build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav</artifactId> <version>1.0-beta-1</version> </extension> </extensions> ... </build>
Next you'll need to update your distributionManagement section:
<distributionManagement> <repository> <id>YOUR_REPOSITORY_FOR_RELEASES_ID</id> <name>Central Repository</name> <url>dav:YOUR_REPOSITORY_FOR_RELEASES_URL</url> </repository> <snapshotRepository> <id>YOUR_REPOSITORY_FOR_SNAPSHOTS_ID</id> <name>Central Development Repository</name> <url>dav:YOUR_REPOSITORY_FOR_SNAPSHOTS_URL</url> </snapshotRepository> </distributionManagement>
You can put <distributionManagement> in the parent pom for a multi-module project. It will be inherited by the child projects, which can override it if necessary.
Performing a deployment
- Now you can use the normal maven deploy command:
$ mvn deploy
- Your SNAPSHOT repository will be viewable at: YOUR_REPOSITORY_FOR_RELEASES_URL
- Your release repository will viewable at: YOUR_REPOSITORY_FOR_SNAPSHOTS_URL
- You will need to navigate down to the appropriate location for your artifacts.