Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 JAVA_家被Maven弄脏了_Maven 2_Ant_Maven - Fatal编程技术网

Maven 2 JAVA_家被Maven弄脏了

Maven 2 JAVA_家被Maven弄脏了,maven-2,ant,maven,Maven 2,Ant,Maven,我正在用统一的Maven构建来改造大量现有的Java项目。由于每个项目都是成熟的,并且已经建立了基于Ant的构建,所以我正在使用maven antrun plugin执行现有的build.xml,如下所示: <plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <exe

我正在用统一的Maven构建来改造大量现有的Java项目。由于每个项目都是成熟的,并且已经建立了基于Ant的构建,所以我正在使用
maven antrun plugin
执行现有的
build.xml
,如下所示:

        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <configuration>
                        <tasks>
                            <ant antfile="build.xml" target="compile" />
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
让我困惑的是

  • 我将
    JAVA_HOME=C:\JAVA\jdk1.6.0_13
    作为我的环境设置的一部分,当执行
    mvn.bat
    时,这正是我得到的值,但是正如您在错误消息中看到的,它显示为
    C:\JAVA\jdk1.6.0_13\jre
  • 如果我运行
    antcompile
    一切都可以正常编译

  • 这是否意味着,
    maven-antrun-plugin
    可能执行类似于
    set-JAVA\u-HOME=%JAVA\u-HOME%\jre
    ?我搜索了批处理/生成文件,但找不到发生更改的位置

    我可以通过在我的ant build.xml文件中放置以下属性定义来修复此问题:

    <property name="build.compiler" value="extJavac"/>
    

    这是公认答案中外部链接的缺点。Codehaus关闭了,因此解决方案消失了。以下是链接背后的内容供参考-您基本上只需将
    ..
    块复制到antrun插件中即可

    maven antrun插件运行ant时,JAVA_HOME设置为JDK的jre子目录,即使整个运行的JAVA_HOME是JDK。 其他地方有关于如何在项目级别为JDK的tools.jar创建依赖项的文档,但这对antrun没有帮助,antrun是一个插件。 以下配置文件执行此任务。路径中的“..”经过“jre”目录向上拉到lib目录

    
    tools.jar
    org.apache.maven.plugins
    maven antrun插件
    com.sun
    工具
    1.5.0
    系统
    ${java.home}/./lib/tools.jar
    
    感谢您扩展断开的链接!先生,你是网络英雄,谢谢,我已经搜索了好几个小时了。它起作用了。我刚换成java版本1.8.0。这应该是现在公认的答案!当tools.jar被删除时,如何在Java 9中解决这个问题?
    <property name="build.compiler" value="extJavac"/>
    
    <profiles>
          <profile>
              <id>tools.jar</id>
              <build>
                <plugins>
                <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <dependencies>
                    <dependency>
                      <groupId>com.sun</groupId>
                      <artifactId>tools</artifactId>
                      <version>1.5.0</version>
                      <scope>system</scope>
                      <systemPath>${java.home}/../lib/tools.jar</systemPath>
                    </dependency>
                  </dependencies>
                </plugin>
                </plugins>
              </build>
          </profile>