Writing a Consumer Plugin

For a sample custom consumer, you can checkout the archiva-consumer-plugin at the archiva sandbox in the SVN repository:

http://svn.apache.org/repos/asf/archiva/sandbox/archiva-consumer-plugin

Below are the steps on how to create a custom repository consumer and plug it in Archiva:

  1. Create a project for your component.
  2. Declare your class or in this case, consumer as a component as shown in the example below. This should be put at the class level.
    Ex.
    @plexus.component role="org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer"
                      role-hint="discover-new-artifact"
                      instantiation-strategy="per-lookup"
    
    where,
      role: the interface that your class implements
      role-hint: the lookup name of the component (your class/consumer)
      instantiation-strategy: how your class will be instantiated
  3. Make sure to add the snippet below in the build section of the project's pom. This is needed to generate the components.xml.
    <plugin>
      <groupId>org.codehaus.plexus</groupId>
      <artifactId>plexus-maven-plugin</artifactId>
      <version>1.3.5</version>
      <executions>
        <execution>
          <id>generate</id>
          <goals>
            <goal>descriptor</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  4. Package your project by executing 'mvn clean package'
  5. Let's say you are using the apache-archiva-1.0-bin.tar.gz to run Archiva. Unpack the binaries then go to bin/linux-x86-32/ (assuming you are running on Linux), then execute './run.sh console'. Then stop or shutdown Archiva after it started. (This is necessary to unpack the war file.)
  6. Copy the jar file you created in step 4 in apache-archiva-1.0/apps/archiva/webapp/lib/
  7. Add the necessary configurations in archiva.xml (in this case, add 'discover-new-artifact' as a knownContentConsumer)
  8. Start up Archiva again.