Cookbook:如何从 Plexus Javadoc 标签升级到 Plexus Java 注解?
概括
这个秘籍描述了如何从 Plexus Javadoc 标签升级到 Plexus Java Annotations,分两步:
plexus-maven-plugin将仅支持 Plexus Javadoc 标签的已弃用的 替换为其继任者:plexus-component-metadata,后者同时支持 Plexus Javadoc 标签和 Plexus Java Annotations,- 使用Plexus的 Java 注释更新源。
注意:如果您的目标组件是 Maven 3.1.0+,使用JSR-330 注释而不是 Plexus Java 注释可能是一个不错的下一步
先决条件插件
以下是使用的插件列表:
| 插入 | 版本 |
|---|---|
plexus-maven-plugin |
1.3.8 |
plexus-component-metadata |
1.7.1 |
等价表
| 丛行家插件 | 丛组件元数据 | |
|---|---|---|
| 项目/插件信息 | 项目/插件信息 | |
| 最新的 | 1.3.8 | 1.7.1 |
| 阶段 | 过程源 | 进程类 |
| 目标 | descriptor |
generate-metadata |
merge-descriptors |
查看staticMetadataDirectory参数 默认值: ${basedir}/src/main/resources/META-INF/plexus | |
test-descriptor |
generate-test-metadata | |
test-merge-descriptors |
查看testStaticMetadataDirectory参数 默认值: ${basedir}/src/test/resources/META-INF/plexus | |
components-report |
报告功能不可用 | |
| 源注释 | javadoc 标签: @plexus.component, @plexus.requirement,@plexus.configuration |
javadoc 标签 + plexus-component-annotationsJava 5 注释: @Component, @Requirement, @Configuration, |
食谱
插件配置
在您的pom.xml,替换plexus-maven-plugin配置:
<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>有相应的plexus-component-metadata配置:
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-metadata</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<goals>
<goal>generate-metadata</goal>
</goals>
</execution>
</executions>
</plugin>
</build>
</project>如果merge-descriptors使用,请将手写的 xml 文件移动到${basedir}/src/main/resources/META-INF/plexus.
用 Plexus Java 5 注解替换 Plexus Javadoc 标签
在您的pom.xml中,添加plexus-component-annotations依赖项:
<project>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-component-annotations</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
</project>在您的 java 源代码中,替换 javadoc 标记:
/**
* @plexus.component role="foo.MyComponent" role-hint="hint-value"
*/
public class MyComponentImplementation
implements MyComponent
{
/**
* @plexus.requirement
*/
private InjectedComponent;
}带有相应的 Java 5 注释
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;
}


