Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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

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
Java ANT编译失败_Java_Ant_Build - Fatal编程技术网

Java ANT编译失败

Java ANT编译失败,java,ant,build,Java,Ant,Build,我是新来的蚂蚁。我有下面的项目结构 Project module1 build.xml module2 build.xml lib 发生的事情是,我在模块2中配置build.xml来构建一个包含module2类的JAR,并将其放在lib文件夹中。现在,我从module1的build.xml调用module2的build.xml。module1需要module2的JAR进行编译。我可以在lib文件

我是新来的蚂蚁。我有下面的项目结构

      Project
        module1
          build.xml
        module2
          build.xml
        lib
发生的事情是,我在模块2中配置build.xml来构建一个包含module2类的JAR,并将其放在lib文件夹中。现在,我从module1的build.xml调用module2的build.xml。module1需要module2的JAR进行编译。我可以在lib文件夹中看到JAR,但模块1仍然没有编译。 谁能帮帮我吗? 这里是我的build.xml文件, module1 build.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project name="module2">    
<property name="app.name"      value="module2"/>
<property name="src.home"      value="${basedir}/src/main/java"/>
<property name="build.home" value="${basedir}/build"/>
<echo>
    module2 build.xml
</echo>
<target name="clean">
    <delete dir="${build.home}"/>
</target>
<target name="init" depends="clean"
          description="Create build dirs and copy static files to work dir">

    <mkdir  dir="${build.home}"/>
    <mkdir  dir="${build.home}/classes"/>      
  </target>


<target name="compile" depends="init"
          description="Compile Java sources and copy to build/classes dir">
    <javac includeantruntime="false" srcdir="${src.home}"
          destdir="${build.home}/classes">

    </javac>
    <copy  todir="${build.home}/classes">
      <fileset dir="${src.home}" excludes="**/*.java"/>
    </copy>
  </target>

<target name="buildJar" depends="compile">
    <echo>Inside buildJar of module2
            </echo>
    <jar destfile="../lib/${app.name}.jar"
         basedir="${build.home}"
         />
  </target>


这是module2 build.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<project name="module2">    
<property name="app.name"      value="module2"/>
<property name="src.home"      value="${basedir}/src/main/java"/>
<property name="build.home" value="${basedir}/build"/>
<echo>
    module2 build.xml
</echo>
<target name="clean">
    <delete dir="${build.home}"/>
</target>
<target name="init" depends="clean"
          description="Create build dirs and copy static files to work dir">

    <mkdir  dir="${build.home}"/>
    <mkdir  dir="${build.home}/classes"/>      
  </target>


<target name="compile" depends="init"
          description="Compile Java sources and copy to build/classes dir">
    <javac includeantruntime="false" srcdir="${src.home}"
          destdir="${build.home}/classes">

    </javac>
    <copy  todir="${build.home}/classes">
      <fileset dir="${src.home}" excludes="**/*.java"/>
    </copy>
  </target>

<target name="buildJar" depends="compile">
    <echo>Inside buildJar of module2
            </echo>
    <jar destfile="../lib/${app.name}.jar"
         basedir="${build.home}"
         />
  </target>

module2 build.xml
模块2的buildJar内部

模块1似乎没有编译,因为模块2创建的jar没有生成

您正在调用subant任务,但未指定目标:

<subant target="buildJar">
    <fileset dir="../module2/" includes="build.xml" />
</subant>

module1生成文件未指定默认目标:

<?xml version="1.0" encoding="UTF-8"?>
<project name="module2">    
..
..

..
..
我建议的解决方案是指定默认目标,如下所示:

<project name="module2" default="buildJar">    

在一边
多模块构建支持和依赖关系管理是嵌入到更现代的Java构建工具中的功能。如果你想在Ant中构造一个大项目,考虑一下如何工作。 解决了这个问题。我忽略了一个愚蠢的错误。这是我所做的改变, module2的build.xml, 1.我做了以下的修改,, 将jar的basedir从basedir=“${build.home}”更改为basedir=“${build.home}/classes” module1的build.xml。 2.对buildEar目标进行了如上所述的类似更改。 我能够成功生成EAR:)


感谢Mark抽出时间:)

请发布build.xml文件以更好地了解可能发生的情况编辑我的帖子以包含build.xmlfiles@Mark-现在开始工作了。将更改发布到下面。谢谢:)即使在module2中提供了默认值,我也会遇到同样的错误。另一件需要注意的事情是,module2的build.xml中的所有echo都被执行,我在lib文件夹中看到了jar。module1 build.xml即使独立运行也会引发编译错误。在执行ANT之前,我将module2jar复制到lib。