maven - 通过 Maven 构建具有不同 JDK 版本的 JAR

标签 maven java

我们目前正忙于升级到 Java 1.7。不幸的是,随着这些事情的发展,许多应用程序无法在 1.7 下编译并中断(即使将覆盖标志传递给 1.7)。计划是尽快重构这些。

我想以这样一种方式配置 Maven,以便可以根据 POM 中的某些属性使用不同的 JDK。我关注了http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html严格来说,但无论我做什么,maven 都会忽略 POM 中指定的 java。

POM 具有以下条目:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <fork>true</fork>
                <source>1.6</source>
                <target>1.6</target>
                <compiler-version>1.6</compiler-version>
                <executable>/usr/lib/jvm/java-6-openjdk/bin/javac</executable> 
                <debug>true</debug>
                <verbose>true</verbose>
            </configuration>
        </plugin>
...

此外,我没有从“详细”标志获得任何输出——我觉得这很奇怪。也许以上完全被忽略了?

编辑:我知道它不起作用,因为检查 META-INF/MANIFEST.MF 文件显示不正确的 Java 版本。使用的版本对应当前路径下的javac。

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: jaco
Build-Jdk: 1.7.0_147-icedtea
Implementation-Title: xxx
Implementation-Vendor: xxx
Implementation-Version: 1.3.7
Specification-Title: xxx
Specification-Vendor: xxx
Specification-Version: 1.3.7

编辑:其他相当有趣的东西。如果我故意破坏 中的文件引用,我会得到:

[INFO] Compilation failure
Failure executing javac,  but could not parse the error:
/bin/sh: /usr/lib/jvm/java-6-openjdk: Permission denied

编辑:我怀疑问题在于构建 list 文件的组件。如果我在我的机器上破坏 java 7(即将 javac 重命名为 javac.pleasegoaway),它会编译!!但是, list 文件仍报告版本 1.7。这已经过去了,现在变得很有趣了。

非常感谢一些帮助,谢谢。

最佳答案

编译和 jar-ing 是两个独立的操作。更改编译器路径时出现编译错误这一事实表明编译正在正确进行。很可能 maven jar 插件正在使用 java7 jar 工具来创建 jar 文件。

关于maven - 通过 Maven 构建具有不同 JDK 版本的 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11210453/

相关文章:

java.lang.ClassNotFoundException : javax. servlet.jsp.tagext.Tag

java - 如何测试更新方法?

java - 如何在不使用 final 关键字的情况下在 Java 中创建不可变类

java - 数据库中的 primefaces 图形图像未加载

java - map 函数永远不会被执行

java - pom.xml 上的plugin 元素中的依赖项有什么用

java - Java API 核心类的 maven-javadoc-plugin 和 inheritDoc

java - 如何使用 Maven 构建 WSDL

java - 运行 Java 应用程序时在何处保存 AWS API key 的最佳实践

maven - Maven 插件和依赖项有什么区别?