This recipe describes how to upgrade from Plexus Javadoc Tags to Plexus Java Annotations, in 2 steps:
Here is the list of the plugins used:
Plugin | Version |
---|---|
plexus-maven-plugin | 1.3.8 |
plexus-component-metadata | 1.5.5 |
plexus-maven-plugin | plexus-component-metadata | |
---|---|---|
project / plugin info | project / plugin info | |
latest | 1.3.8 | 1.5.5 |
phase | process-sources | process-classes |
goals | descriptor | generate-metadata |
merge-descriptors | see staticMetadataDirectory parameter default: ${basedir}/src/main/resources/META-INF/plexus | |
test-descriptor | generate-test-metadata | |
test-merge-descriptors | see testStaticMetadataDirectory parameter default: ${basedir}/src/test/resources/META-INF/plexus | |
source annotations | javadoc tags: @plexus.component, @plexus.requirement, @plexus.configuration |
javadoc tags + plexus-component-annotations Java 5 annotations: @Component, @Requirement, @Configuration, |
In your pom.xml, replace plexus-maven-plugin configuration:
- <project>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-maven-plugin</artifactId>
- <version>1.3.8</version>
- <executions>
- <execution>
- <goals>
- <goal>descriptor</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </build>
- </project>
with corresponding plexus-component-metadata configuration:
- <project>
- <build>
- <plugins>
- <plugin>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-metadata</artifactId>
- <version>1.5.5</version>
- <executions>
- <execution>
- <goals>
- <goal>generate-metadata</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </build>
- </project>
If merge-descriptors is used, move the handwritten xml file to ${basedir}/src/main/resources/META-INF/plexus.
In your pom.xml, add plexus-component-annotations dependency:
- <project>
- <dependencies>
- <dependency>
- <groupId>org.codehaus.plexus</groupId>
- <artifactId>plexus-component-annotations</artifactId>
- <version>1.5.5</version>
- </dependency>
- </dependencies>
- </project>
In your java sources, replace javadoc tags:
- /**
- * @plexus.component role="foo.MyComponent" role-hint="hint-value"
- */
- public class MyComponentImplementation
- implements MyComponent
- {
- /**
- * @plexus.requirement
- */
- private InjectedComponent;
- }
with corresponding Java 5 annotations
- import org.codehaus.plexus.component.annotations.Component;
- import org.codehaus.plexus.component.annotations.Requirement;
- @Component( role = MyComponent.class, hint = "hint-value" )
- public class MyComponentImplementation
- implements MyComponent
- {
- @Requirement
- private InjectedComponent;
- }