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