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。