首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为maven编译器插件设置默认的jdk。

为maven编译器插件设置默认的jdk。
EN

Stack Overflow用户
提问于 2013-10-24 16:11:25
回答 7查看 22.3K关注 0票数 14

我刚刚在一个新的ubuntu系统上安装了maven,其中包括maven编译器插件。我有一个以前构建良好的java项目,默认为javac源代码和目标为5(JDK1.5)。但是,该项目现在正试图在新系统上使用jdk1.3进行编译。是否有一种简单的方法可以将系统配置为使用>=jdk5?

以下是系统的一些配置细节:

代码语言:javascript
复制
$ java -version
java version "1.6.0_45"

$ dpkg -s maven
Package: maven
Status: install ok installed
Priority: optional
Section: java
Installed-Size: 1489
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Version: 3.0.4-2

$ dpkg -s libmaven-compiler-plugin-java
Package: libmaven-compiler-plugin-java
Status: install ok installed
Priority: optional
Section: java
Installed-Size: 75
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Source: maven-compiler-plugin
Version: 2.0.2-6

我已经检查了maven编译器-plugin-2.0.2.pom文件,而丛编译器-javac.initialVersion和其他文件被设置为1.5.3。

我知道我可以在每个项目的基础上通过在插件上下文中包含一个源/目标标记来设置它,但我希望将maven编译器配置为默认为jdk5或更高版本,而不必在大量项目中这样做。

我该怎么做?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-10-24 16:21:02

在较早版本的maven编译器插件中,源和目标的默认值为1.3 (如2.0.2-6)。至少使用Maven编译器插件的3.0版本将其恢复到原来的行为,或者只需配置该插件以获得源和目标值。

票数 1
EN

Stack Overflow用户

发布于 2013-10-24 17:45:18

在pom中,指定以下命令将编译器设置为JDK5:

代码语言:javascript
复制
<properties>
    <maven.compiler.source>1.5</maven.compiler.source>
    <maven.compiler.target>1.5</maven.compiler.target>
</properties>

代码语言:javascript
复制
<project>
    <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
    ...
  </project>

我在依赖项之前指定了我的部分,尽管只要它在项目元素中的一部分,您就应该能够将它放置在pom中的任何地方。

以前我和Maven遇到了一个类似的问题,这个问题是为我解决的。本质上,这是将-source-target标志设置为指定的值,并将其传递给编译器。较新的插件默认为1.5。

为了在不指定属性的情况下使用默认方法,您需要运行更高版本的Maven。

我想您还可以通过IDE设置一个模板,将其包含在所有新的pom文件中。当然,实际实现将取决于您的IDE..。

有关更多细节,请参见apache maven编译器插件文档设置源代码和编译器示例

票数 19
EN

Stack Overflow用户

发布于 2015-01-20 05:40:52

我尝试了maven-compiler-plugin方法,结果证明它很麻烦,因为maven-surefire-pluginmaven-cobertura-plugin这样的插件仍然因为不兼容问题而失败。

更好的方法是使用maven-工具链插件

创建/.m2/toolchains.xml步骤1

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF8"?>
<toolchains>
<!-- JDK toolchains -->
<toolchain>
    <type>jdk</type>
    <provides>
        <version>1.8</version>
        <vendor>sun</vendor>
    </provides>
    <configuration>
          <jdkHome>/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home</jdkHome>
    </configuration>
</toolchain>
<toolchain>
    <type>jdk</type>
    <provides>
        <version>1.7</version>
        <vendor>sun</vendor>
    </provides>
    <configuration>
        <jdkHome>/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home</jdkHome>
    </configuration>
</toolchain>
<toolchain>
    <type>jdk</type>
    <provides>
        <version>1.6</version>
        <vendor>apple</vendor>
    </provides>
    <configuration>
        <jdkHome>/Library/Java/JavaVirtualMachines/1.6.0_65-b14-462.jdk/Contents/Home</jdkHome>
    </configuration>
</toolchain>

<!-- other toolchains -->
<!--
<toolchain>
    <type>netbeans</type>
    <provides>
        <version>5.5</version>
    </provides>
    <configuration>
        <installDir>/path/to/netbeans/5.5</installDir>
    </configuration>
</toolchain>
-->

maven-toolchain-plugin步骤2将添加到项目pom.xml中的plugins部分。

*如果使用maven 3,请确保这也进入到pluginManagement中*

代码语言:javascript
复制
   <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-toolchains-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>toolchain</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <toolchains>
                    <jdk>
                        <version>1.7</version>
                        <vendor>sun</vendor>
                    </jdk>
                </toolchains>
            </configuration>
        </plugin>

瞧,所有其他插件都能找到正确的JDK。希望能帮上忙。今天我几乎花了半天时间在这个问题上。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19571165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档