maven-assembly-plugin和JVM版本

时间:2011-04-19 02:28:47

标签: java compiler-construction maven

是否可以使用maven-assembly-plugin创建JAR,设置特定的编译器版本?

由于

更新:

我想说:maven-compiler-plugin

2 个答案:

答案 0 :(得分:2)

您无法真正设置编译器版本(因为maven使用已安装的版本),但您可以在maven-compiler-plugin上配置源和目标级别:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin> 

编辑:正如khmarbaise在评论中指出的那样,可以指定不同的编译器(如果必须),但您必须将fork设置为为true并指定可执行文件的路径,在通常情况下,这不是您想要的复杂性。但他是正确的,它实际上是可能的,显然是自maven编译器插件的2.0版以来。

答案 1 :(得分:1)

正如khmarbaise在评论中所解释的那样,assembly插件就是将一些项目输出聚合到一个包中(例如ZIP)。 JVM不参与此步骤。

您想要达到什么目标?要指定用于构建JAR的JVM的版本,您可以这样做:

  <build>
    ...
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>

在这种情况下,您将使用JVM 1.6编译项目。

由于我不确定您想要实现什么,还有另一件事对您有用:您可以在使用特定JVM时激活配置文件。例如:

<profiles>
  <profile>
    <activation>
      <jdk>1.4</jdk>
    </activation>
    ...
  </profile>
</profiles>

在这种情况下,如果您使用的是JVM 1.4,则会激活您的配置文件。如果您使用的是Maven 2.1+,您还可以使用一系列值:

<profiles>
  <profile>
    <activation>
      <jdk>[1.3,1.6)</jdk>
    </activation>
    ...
  </profile>
</profiles>

此配置文件将在1.3(包含)和1.6(不包括)之间的所有版本中激活,即1.3,1.4和1.5。

使用它,您将能够根据所使用的JVM版本为您的构建配置任何插件。