This posting continues the series on moving from an Ant to a Maven build.
Implementing a Maven repository manager using Apache's HTTPd with WebDav is straightforward. For this example, create the directory tree
.
├── apache2
│ ├── httpd.conf
│ └── logs
└── www
└── repository
For the purposes of this example the directory tree is in /var/maven/
The httpd.conf file contains
LoadModule mpm_prefork_module libexec/apache2/mod_mpm_prefork.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
LoadModule access_compat_module libexec/apache2/mod_access_compat.so
LoadModule mime_module libexec/apache2/mod_mime.so
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
ServerRoot ${BASEDIR}/apache2
LogLevel warn
PidFile logs/httpd.pid
Listen 8080
ServerName localhost:8080
ServerAdmin andrew@andrewgilmartin.com
AddType application/octet-stream .sha1
AddType application/octet-stream .md5
AddType text/xml .xml
AddType text/xml .pom
AddType application/octet-stream .jar
AddType application/octet-stream .war
DocumentRoot ${BASEDIR}/www
DavLockDB DavLock
<Directory />
DAV On
</Directory>
Start the HTTP server (in the foreground) using
BASEDIR=/var/maven/ httpd -f /var/maven/apache2/httpd.conf -X
For Maven deploy to this repository manager you need to make two changes to your pom.xml. The first is to include the extension in the <build/> section
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>3.3.4</version>
</extension>
</extensions>
The second is to use the "dav:" prefix to your <distributionManagement/> element URLs
<distributionManagement>
<snapshotRepository>
<id>neighborhood-snapshots</id>
<name>Neighborhood Snapshots</name>
<url>dav:http://localhost:8080/repository/</url>
</snapshotRepository>
<repository>
<id>neighborhood-releases</id>
<name>Neighborhood Releases</name>
<url>dav:http://localhost:8080/repository/</url>
</repository>
</distributionManagement>
To deploy your project use
mvn clean package deploy
This posting is part of the series about moving to Maven from an ancient Ant build.