This project has retired. For details please refer to its Attic page.
Archiva – Building Archiva Fork me on GitHub

Building Archiva

To build the very latest code available...

  1. Check out the source code as described on the Source Repository page.
  2. You may setup a suitable ~/.m2/settings.xml to add the needed repositories.
  3. In the 'parent' directory, execute mvn clean install to build the parent pom. (only needed if we depend on a new parent)
  4. In the 'archiva' directory, execute mvn clean install to build the Archiva modules and distribution.

After the build completes, you can find the Archiva distribution in archiva-jetty/target and the Archiva webapp in archiva-modules/archiva-web/archiva-webapp/target

Usually, it's that simple. :) Occasionally, Archiva may depend on a snapshot of another project such as Redback, and you may need to build that first, or configure a snapshot repository. If you're having trouble building Archiva, ask on the Development mailing list and we'll point you in the right direction.

Merging Github Pull requests

When somebody creates a pull request for archiva on github an email is sent to the developer list.

First review the changes and check for style and impact of the changes. And check the build on the jenkins server for this pull request (archiva-master-build-pr-builder).

We have moved to gitbox, so merging the PR should be done on the github web site by using the PR merge features.

Documentation

The version-specific documentation for the latest version of Archiva can be found in archiva/archiva-docs, and the top-level Archiva website --including the page you're reading now -- is in the site directory.

To work on the documentation, execute mvn site:run in one of these directories, and then visit http://localhost:8080 to view pages as you edit them. When you're done, submit a patch in the issue tracker.

git clone

git clone git://github.com/apache/archiva.git
or trough https
git clone https://github.com/apache/archiva.git

Running Javascript webapp with jetty-maven-plugin

You can use jetty-maven-plugin to run the webapp without installing the war in a container. With maven3 in the top directory :

mvn jetty:run -pl :archiva-webapp -am # use mvnDebug if you want to attach a debugger
or
sh ./jetty.sh # use sh ./jetty-debug.sh if you want to attach a debugger

Hit your browser: http://localhost:9091/archiva/index.html

Running the selenium tests (Web UI tests) locally

The selenium tests use docker containers for the selenium and browser installation. To run the tests locally you should have docker installed on your developer machine. The docker container can be built locally or pulled from the apachearchiva Dockerhub repository. To start the docker container, run the following script:

  ./src/ci/scripts/container_webtest.sh start

The UI tests can be run with:

mvn clean install -DmaxWaitTimeInMs=2000 -DseleniumRemote=true -Pci-server -Pit-js -Pchrome -pl :archiva-webapp-test

Maven settings.xml

You should setup the following repositories in your settings.xml to be able to resolve the dependencies. Sometimes we need to have certain snapshot versions for plugins, so the apache snapshot repository is added.

  <profiles>
      <profile>
          <activation>
              <activeByDefault>true</activeByDefault>
          </activation>
          <repositories>
              <repository>
                  <id>central</id>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
                  <url>https://repo1.maven.org/maven2</url>
              </repository>
          </repositories>
          <pluginRepositories>
              <pluginRepository>
                  <id>central</id>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>true</enabled>
                  </snapshots>
                  <url>https://repo1.maven.org/maven2</url>
              </pluginRepository>
              <pluginRepository>
                  <id>apache-snapshot</id>
                  <releases>
                      <enabled>false</enabled>
                  </releases>
                  <snapshots>
                      <enabled>true</enabled>
                  </snapshots>
                  <url>https://repository.apache.org/content/groups/snapshots</url>
              </pluginRepository>

          </pluginRepositories>
       </profile>
  </profiles>