【问题标题】:How can tell maven to use Java5 rather than Java6?如何告诉 maven 使用 Java5 而不是 Java6?
【发布时间】:2012-10-27 05:25:56
【问题描述】:

您好,我有一个多模块 Maven 项目,我在我的 Windows 机器上安装了 Java1.5Java1.6 并为 Java1.6 在环境变量中(对于 Eclipse Juno)。但我只想用 Java5 运行 maven 命令。如何在父项目 pom 中设置使用 Java5 仅用于编译 Java 文件。我在父 pom.xm 文件中添加了这些行。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <compilerId>eclipse</compilerId>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

但我在智利项目 pom.xml 文件中遇到错误

生命周期配置未涵盖插件执行: org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (执行:default-testCompile,阶段:test-compile)

【问题讨论】:

  • 是在构建时出现错误吗?
  • No My pom.xml 在 Eclipse 中显示此错误
  • 请注意,这仍然会使用在 JAVA_HOME 中找到的 javac 进行编译,只是传递了一些选项。如果你明确需要编译器在 Java 5 中运行,你必须使用额外的巫术来告诉 Maven 在哪里可以找到它。
  • 只是上面的错误还是你只粘贴了部分错误?如果是这样,你能给出完整的错误信息吗?
  • 我得到这个异常,默认情况下没有运行任何 maven 命令子 pom.xml 在鼠标悬停时显示这个异常。

标签: java maven


【解决方案1】:

请使用 Plugin_Management 而不是 Plugins 声明,此声明需要将插件配置继承到子项目 (http://maven.apache.org/pom.html#Plugin_Management)

在您的情况下,它将以下列方式显示:

父级 pom.xml

<build>
  <pluginManagement>
    <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.5.1</version>
          <configuration>
             <source>1.5</source>
             <target>1.5</target>
          </configuration>
       </plugin>
    </plugins>
   </pluginManagement>
</build>

孩子 pom.xml

<build>
  <plugins>
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-compiler-plugin</artifactId>
    </plugin>
  </plugins>
</build>

还可以在 parent pom.xml

中设置以下属性
<properties>
   <maven.compiler.source>1.5</maven.compiler.source>
   <maven.compiler.target>1.5</maven.compiler.target>
</properties>

【讨论】:

  • 嗯,和我对依赖所做的一样。
  • 这听起来像是对 maven 用户的一个很好的推荐,但它回答了这个问题吗?我的意思是,问题中提到的错误是否与插件管理有关?
  • 我添加了你提到的但我仍然在子 pom.xml 文件中遇到异常
  • 你能编辑你的答案吗?这样它就可以清楚地告诉我和每个人我们必须在父 Pom.xml 和子 Pom.xml 文件中执行哪些条目。谢谢
  • 感谢您编辑您的答案。如果我从显示 java -version (1.6) 的命令提示符运行 mvn install,您能否让我知道一件事?
【解决方案2】:

好像是编译测试源有问题。

尝试将testSourcetestTarget 也添加到配置中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <configuration>
                <compilerId>eclipse</compilerId>
                <source>1.5</source>
                <target>1.5</target>
                <testSource>1.5</testSource>
                <testTarget>1.5</testTarget>
            </configuration>
        </plugin>
    </plugins>
</build>

编辑

这似乎是一个众所周知的问题,您必须对 m2e 插件进行一些配置。这个eclipse网站有一些信息:http://wiki.eclipse.org/M2E_plugin_execution_not_covered

必须在父 pom 中的 build 标签下添加这样的内容:

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
                <lifecycleMappingMetadata>
                    <pluginExecutions>
                        <pluginExecution>
                            <pluginExecutionFilter>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <versionRange>[1.0.0,)</versionRange>
                                <goals>
                                    <goal>test-compile</goal>
                                    <goal>compile</goal>
                                </goals>
                            </pluginExecutionFilter>
                            <action>
                                <execute/>
                            </action>
                        </pluginExecution>
                    </pluginExecutions>
                </lifecycleMappingMetadata>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>

我并不是真正的 Eclipse 用户,所以不要问我为什么必须这样做,但应该这样做。

【讨论】:

  • 对不起,我的项目中没有任何测试类。还有一件事我必须在所有 pom.xml 文件中或仅在父 pom.xml 文件中添加这些条目。
  • 对不起@maba,但我在子 Pom.xml 文件的父标签上仍然遇到同样的错误
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2023-03-18
  • 2015-08-16
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
相关资源
最近更新 更多