Maven 2 Maven项目对JDK版本的依赖性
我有一些项目需要使用特定版本的JDK进行构建 问题不在源参数和目标参数中,而是在编译期间使用的运行时JAR中。 在某些情况下,如果我尝试使用错误的JDK进行编译,就会出现编译错误,但有时构建成功,并且在使用JAR时会出现运行时错误 例如,在eclipse中,我能够在.classpath文件中为项目建立执行环境 在maven有没有办法处理这种情况 我希望能够像POM文件中项目的其他依赖项一样处理JRE依赖项 更新:Maven 2 Maven项目对JDK版本的依赖性,maven-2,dependencies,java,Maven 2,Dependencies,Java,我有一些项目需要使用特定版本的JDK进行构建 问题不在源参数和目标参数中,而是在编译期间使用的运行时JAR中。 在某些情况下,如果我尝试使用错误的JDK进行编译,就会出现编译错误,但有时构建成功,并且在使用JAR时会出现运行时错误 例如,在eclipse中,我能够在.classpath文件中为项目建立执行环境 在maven有没有办法处理这种情况 我希望能够像POM文件中项目的其他依赖项一样处理JRE依赖项 更新: 当我问这个问题时,被接受的解决方案是最好的,所以我不会改变它。同时,针对这类问题提
当我问这个问题时,被接受的解决方案是最好的,所以我不会改变它。同时,针对这类问题提出了一种新的解决方案:。有关更多详细信息,请访问链接。我相信,通过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>
org.apache.maven.plugins
maven编译器插件
2.1
1.6
1.6
在这里,您可以以1.6版为目标,或者编写自己的版本
我有一些项目需要使用特定版本的JDK进行构建
您可以使用强制使用特定版本的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>
[...]
org.apache.maven.plugins
maven enforcer插件
强制执行版本
执行
1.5
[...]
但我不确定我是否真的理解了这个问题。如果这不是您想要的,也许您可以在概要文件中声明特定于JDK的依赖项,并使用基于JDK版本的激活触发器。例如:
<profiles>
<profile>
<activation>
<jdk>1.5</jdk>
</activation>
...
</profile>
</profiles>
1.5
...
当JDK的版本以“1.5”开头时,此配置将触发概要文件 我发现了这篇文章:
[...]
[...]
org.apache.maven.plugins
maven编译器插件
2.1
真的
真的
${JAVA_1_4_HOME}/bin/javac
1.3
[...]
[...]
No,正如我所说,这不是源代码和目标参数的问题,因为这只影响编译器读取语言(源代码)和生成字节码(目标代码)的方式,而不影响编译中使用的库。如果您使用1.6 jdk编译一个以1.5作为源/目标参数的项目,您仍然可以得到一个jar,该jar对于使用1.5 jre执行无效(例如,库类中的重载方法可能会出现问题)。@Andrea那么Pascal解决方案就是答案。我认为概要文件并不能解决我的问题。我需要强制maven在编译项目时使用特定的jdk。最好的解决方案似乎是Simone提出的。感谢enforcer插件对我来说真的很有用,即使它不能完全解决我的问题。
<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>