|  ------ | 
 |  Writing a Consumer Plugin | 
 |  ------ | 
 |  Maria Odea Ching | 
 |  ------ | 
 |  23 Nov 2007 | 
 |  ------ | 
 |  | 
 | ~~ Licensed to the Apache Software Foundation (ASF) under one | 
 | ~~ or more contributor license agreements.  See the NOTICE file | 
 | ~~ distributed with this work for additional information | 
 | ~~ regarding copyright ownership.  The ASF licenses this file | 
 | ~~ to you under the Apache License, Version 2.0 (the | 
 | ~~ "License"); you may not use this file except in compliance | 
 | ~~ with the License.  You may obtain a copy of the License at | 
 | ~~ | 
 | ~~   http://www.apache.org/licenses/LICENSE-2.0 | 
 | ~~ | 
 | ~~ Unless required by applicable law or agreed to in writing, | 
 | ~~ software distributed under the License is distributed on an | 
 | ~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | ~~ KIND, either express or implied.  See the License for the | 
 | ~~ specific language governing permissions and limitations | 
 | ~~ under the License. | 
 |  | 
 | ~~ NOTE: For help with the syntax of this file, see: | 
 | ~~ http://maven.apache.org/guides/mini/guide-apt-format.html | 
 |  | 
 | 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. |