我的项目需要使用特定版本的JDK构建。
问题不在源和目标参数中,而是在编译期间使用的运行时的jar中。 在某些情况下,如果我尝试使用错误的JDK进行编译,则会出现编译错误,但有时构建成功并且在使用jar时会出现运行时错误。
例如在eclipse中,我有能力在.classpath文件中为项目建立执行环境。
有没有办法在maven中处理这种情况?
我希望能够像处理POM文件中项目的其他依赖项一样处理JRE依赖。
当我提出这个问题时,接受的解决方案是最好的,所以我不会改变它。与此同时,我们引入了一种解决这类问题的新方案:Maven Toolchain。请点击链接了解更多详情。
答案 0 :(得分:2)
我的项目需要使用特定版本的JDK构建。
您可以使用Maven Enforcer plugin强制使用特定版本的JDK:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-versions</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireJavaVersion>
<version>1.5</version>
</requireJavaVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
</project>
但我不确定我是否真的理解这个问题。如果这不是您想要的,也许您可以在配置文件中声明您的JDK特定依赖项,并使用基于JDK版本的激活触发器。例如:
<profiles>
<profile>
<activation>
<jdk>1.5</jdk>
</activation>
...
</profile>
</profiles>
当JDK的版本以“1.5”开头时,此配置将触发配置文件。
答案 1 :(得分:2)
我发现了这篇文章:
http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html
<project>
[...]
<build>
[...]
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<verbose>true</verbose>
<fork>true</fork>
<executable>${JAVA_1_4_HOME}/bin/javac</executable>
<compilerVersion>1.3</compilerVersion>
</configuration>
</plugin>
</plugins>
[...]
</build>
[...]
</project>
答案 2 :(得分:1)
我相信这可以通过你的pom中的以下插件来解决:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
您可以在此处定位1.6版,或编写自己的版本