Cookbook:如何从 Plexus Javadoc 标签升级到 Plexus Java 注解?

概括

这个秘籍描述了如何从 Plexus Javadoc 标签升级到 Plexus Java Annotations,分两步:

  1. plexus-maven-plugin将仅支持 Plexus Javadoc 标签的已弃用的 替换为其继任者: plexus-component-metadata,后者同时支持 Plexus Javadoc 标签和 Plexus Java Annotations,
  2. 使用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;
}