maven-2 – 在Maven中使用不同的artifactid(基于JDK使用)构建相同的项目

我有一个场景,其中我的项目需要在不同的JDK中编译,并且生成的工件名称应该根据所使用的JDK而不同。例如,如果项目名称是MyProject,并且我调用mvn install,那么需要在JDK 1.4和JDK 1.5中编译,最后我得到同一个项目的两个jar(MyProjectJDK14-1.0和MyProjectJDK15-1.0)。是可以实现吗?
Maven的方法是不要更改该工件的finalName,而是使用一个分类器。例如:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <classifier>${envClassifier}</classifier>
        </configuration>
      </plugin>
    </plugins>
  </build>
  ...
  <profiles>
    <profile>
      <id>jdk16</id>
      <activation>
        <jdk>1.6</jdk>
      </activation>
      <properties>
        <envClassifier>jdk16</envClassifier>
      </properties>
    </profile>
    <profile>
      <id>jdk15</id>
      <activation>
        <jdk>1.5</jdk>
      </activation>
      <properties>
        <envClassifier>jdk15</envClassifier>
      </properties>
    </profile>
  </profiles>
</project>

JAR工件将被命名为$ {finalName} – $ {envClassifier} .jar,并使用以下语法包含为依赖关系:

<dependency>
  <groupId>com.mycompany</groupId>
  <artifactId>my-project</artifactId>
  <version>1.0</version>
  <classifier>jdk16</classifier>
</dependency>

你必须调用Maven构建两次来生产两个jar(一个体面的CI引擎可以做到这一点)。

翻译自:https://stackoverflow.com/questions/3092085/building-same-project-in-maven-with-different-artifactid-based-on-jdk-used

转载注明原文:maven-2 – 在Maven中使用不同的artifactid(基于JDK使用)构建相同的项目