【问题标题】:Configurable annotation processors in maven modulesMaven 模块中的可配置注释处理器
【发布时间】:2020-10-14 23:35:46
【问题描述】:

我们有多个使用某些注释处理器的服务。所有这些服务有两个共同点 - 相同的父 pom 和特定的 pom-import-dependency in dependencyManagement。在各个服务中,我们使用下面的 sn-p 定义处理器

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <annotationProcessorPaths>
        <path>
          <artifactId>mapstruct-processor</artifactId>
          <groupId>org.mapstruct</groupId>
          <version>${mapstruct.version}</version>
        </path>
        <path>
          <artifactId>lombok</artifactId>
          <groupId>org.projectlombok</groupId>
          <version>${projectlombok.version}</version>
        </path>
      </annotationProcessorPaths>
    </configuration>
    <groupId>org.apache.maven.plugins</groupId>
  </plugin>

这里的问题是每个服务都需要自己定义处理器的版本。我只是不想将处理器添加到父 pom,因为有许多服务不使用 lombok 或 mapstruct,所以不想为它们添加额外的处理器。任何可用的解决方案,我可以最好在 bom 依赖项中或在父 pom 中指定处理器的版本,并且服务可以决定他们想要使用哪个处理器?

【问题讨论】:

    标签: java maven annotation-processing maven-compiler-plugin


    【解决方案1】:

    您可以在父 pom.xml 中使用&lt;properties&gt;,并在子 pom.xml 文件中使用它们。

    在父 pom.xml 中

    <properties>
      <project.lombok.version>1.2.3</project.lombok.version>
    </properties>
    

    在需要使用版本的子 pom.xml 中

    <artifactId>lombok</artifactId>
    <groupId>org.projectlombok</groupId>
    <version>${project.lombok.version}</version>
    

    【讨论】:

    • 我正在寻找更多的选项,我可以只使用artifactIdgroupId,甚至更少:p
    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 2013-10-30
    相关资源
    最近更新 更多