1
我有一堆构建插件的ant项目都符合相同的API。插件包含他们依赖的第三方库,以便它们是独立的。由于各个构建脚本中的许多行为都是相似的,因此我决定将公共构件拖放到通用构建脚本中。ant构建脚本中的常见jar任务
原构建脚本看起来是这样的:
项目A/build.xml文件:
<project name="ProjectA" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset src="externlib1.jar" />
<zipfileset src="externlib2.jar" />
</jar>
</target>
...
</project>
项目B/build.xml文件:
<project name="ProjectB" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset src="externlib2.jar" />
<zipfileset src="externlib3.jar" />
</jar>
</target>
...
</project>
这里是我的构建脚本看就像重构后一样:
Common.xml:
<project name="Common" basedir=".">
...
<target name="jar">
<jar destfile="${project.target}" manifest="common-manifest.mf">
<fileset dir="${project.build.bin.dir}" />
<zipfileset refid="extern.libs" />
</jar>
</target>
...
</project>
项目A/build.xml文件:
<project name="ProjectA" basedir=".">
...
<zipfileset id="extern.libs">
<file file="externlib1.jar" />
<file file="externlib2.jar" />
</zipfileset>
...
<import file="../common.xml" />
</project>
项目B/build.xml文件:
<project name="ProjectB" basedir=".">
...
<zipfileset id="extern.libs">
<file file="externlib2.jar" />
<file file="externlib3.jar" />
</zipfileset>
...
<import file="../common.xml" />
</project>
然而,重构构建不工作 - 我认为,问题是,我无法声明具有多个文件的zipfileset。
我找不到一种方法可以声明一个文件集,以便通用jar任务的行为与在每个项目的构建脚本中声明jar任务的行为相同。有没有人解决过这个问题?有什么不同的方式可以完成同样的事情吗?
感谢您的建议,但我不认为它的工作原理 - 包含在zipfileset中的jar没有扩展到最终的项目jar中。如果我使用
iboisver
2009-10-27 23:04:08
@iboisver - 我修改了它。错过了基本的东西 - 道歉。我已经在这个测试上运行了,它看起来对我来说很有用。 – 2009-10-28 00:22:27