我是蚂蚁的新手,我参考了很多网站,我需要为我的项目构建.xml在两个模块中,我有application.xml文件,它表示相应的战争文件
所以我的问题是,添加application.xml文件是否足够
<ear destfile="${dist.dir}/${ant.project.name}.ear" appxml="${conf.dir}/application.xml">
<metainf dir="${build.dir}/META-INF"/>
<fileset dir="${dist.dir}" includes="*.jar,*.war"/>
</ear>
这是否会引用相应的战争文件,或者我需要编译整个场景,请告诉我。如何解决这个问题。
我不能100%确定你在问什么。
为了使用<ear>
任务,您已经需要编译所需的jar和wars。
如果已经构建了这些jar和war,那么只需像在示例中那样在<ear>
任务中引用它们。在构建耳朵之前,application.xml
必须已经存在。application.xml
不会制造罐子和战争,你必须这样做。
如果你还没有建造战争和罐子,你需要先建造。build.xml
的大致轮廓如下:
<project name="foo" basedir="." default="package">
<!-- Some standard properties you've defined -->
<property name="target.dir" value="${basedir}/target"/>
<property name="xxx" value="yyy"/>
<property name="xxx" value="yyy"/>
<property name="xxx" value="yyy"/>
<!-- Compile properties that allow overrides -->
<property name="javac.nowarn" value="false"/>
<property name="javac.listfiles" value="false"/>
<property name="javac.srcdir" value="source"/>
<property name="javac.distdir" value="${target.dir}/classes"/>
<target name="clean"
description="cleans everything nice and shiny">
<delete dir="${target.dir}"/>
</target>
<target name="compile"
description="Compiles everything">
<mkdir dir="${javac.distdir}"/>
<javac srcdir="${javac.srcdir}"
destdir="${javac.destdir}"
[...]
[...]/>
</target>
<target name="package.jar"
depends="compile"
description="Package jarfile">
<jar destfile="${target.dir}/jarname.jar"
[...]
[...]/>
</target>
<target name="package.jar2"
depends="compile"
description="Package jarfile">
<jar destfile="${target.dir}/jarname2.jar"
[...]
[...]/>
</target>
<target name="package.war"
depends="compile"
description="Package jarfile">
<war destfile="${target.dir}/jarname.jar"
[...]
[...]/>
</target>
<target name="package"
depends="package.jar"
description="Make the ear">
<ear destfile="${target.dir}/earfile.ear"
[...]/>
</target>
</project>
基本上,它由一堆目标组成,每个目标执行一项任务。你可以根据其他目标设定目标。例如,这个特定的build.xml
将自动运行package
任务。程序包任务依赖于package.jar
任务,而compile
任务依赖于该任务。因此,build.xml
文件将首先调用compile
,然后调用package.jar
,再调用package
。
需要记住的重要一点是,您没有指定事件的顺序。让Ant弄清楚这一点,让Ant弄明白你需要做什么。假设你修改了一个java源文件。Ant知道它只需要重新编译那一个文件。它还知道可能必须重新生成包含该类文件的jarfile。然后,它知道必须重建耳朵。大多数任务都可以自己解决,并且您不会为每个构建执行clean
。(您注意到clean
目标不是由package
或compile
调用的。您必须手动调用它(。
我唯一建议的另一件事是你尽量保持工作区域的清洁。您创建的任何文件都应该放在${target.dir}
目录中。这样,当您执行clean
时,您只需要删除那一个目录。
我希望这能回答你的问题。