繁体   English   中英

Maven忽略了“ maven-compiler-plugin”要求

[英]Maven ignores the “maven-compiler-plugin” requirements

我正在使用Maven 3.0.5。 我的“ maven-compile-plugin”有问题。 基本上,我有2个项目,旧的一个在Java 6中,而新的一个在Java 7下。我当前的JAVA_HOME很好,并且是:

$ echo $JAVA_HOME C:\\Program Files (x86)\\Java\\jdk1.6.0_38

在新项目中,我使用具有以下配置的maven-compile-plugin:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <fork>true</fork>
            <verbose>true</verbose>
            <source>1.7</source>
            <target>1.7</target>
            <executable>${JDK7}</executable>
            <compilerVersion>1.7</compilerVersion>
        </configuration>
    </plugin>

我已经在settings.xml中声明了JDK7变量:

    <profiles>
    <profile>
        <id>compiler</id>
        <properties>
            <JDK6>C:\Program Files (x86)\Java\jdk1.6.0_38\bin\javac</JDK6>
            <JDK7>C:\Program Files (x86)\Java\jdk1.7.0_45\bin\javac</JDK7>
        </properties>
    </profile>
</profiles>
<activeProfiles>
    <activeProfile>compiler</activeProfile>
</activeProfiles>

在新项目中,我还使用强制执行器插件检查编译的源是否符合Java 7,因此在我的POM中,我具有:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
    <execution>
        <id>enforce-versions</id>
        <phase>validate</phase>
        <goals>
            <goal>enforce</goal>
        </goals>
        <configuration>
            <rules>
                <requireJavaVersion>
                    <version>1.7</version>
                </requireJavaVersion>
            </rules>
        </configuration>
    </execution>
</executions>

我对Maven不了解的是,它始终使用JAVA_HOME定义的编译器。 由于它默认为Java 6,因此在我构建新项目时,强制执行器插件总是会失败,因为Maven使用Java 6:

        $ mvn compile -X
    Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
    Maven home: c:\Dev\apache-maven-3.0.5
    Java version: 1.6.0_38, vendor: Sun Microsystems Inc.
    Java home: c:\Program Files (x86)\Java\jdk1.6.0_38\jre
    Default locale: fr_FR, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
[...]
[INFO] --- maven-enforcer-plugin:1.3.1:enforce (enforce-versions) @ arom-wrapper ---
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 1.6.0-38 is not in the allowed range 1.7.

你能帮我这个忙吗?

好的,我想我已经找到了根本原因,很可能是我是个白痴。 Maven是使用JDK 6启动的,但是这些类在Java 7中已经很好地进行了编译,我已经检查了输出类的次要/主要版本。 正如Aurélien所提到的,强制执行程序插件仅用于检查Maven是与JDK 6一起启动的。因此,我删除了强制执行程序规则。 谢谢 !

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM