是否可以使用maven-assembly-plugin
创建JAR,设置特定的编译器版本?
我想说的是:maven-compiler-plugin
您不能真正设置编译器版本(因为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>
Edit:正如khmarbaise在评论中指出的那样,如果必须的话,可以指定不同的编译器,但是您必须将fork
设置为true并指定可执行文件的路径,在通常情况下,这不是您想要的那种复杂性。但他是对的,这实际上是可能的,而且显然从maven编译器插件2.0版开始就有了。
正如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版本为您的构建配置任何插件。