【发布时间】:2016-07-21 01:45:34
【问题描述】:
我有一个 build.xml,我将一些可运行的胖 jar 放在一起,目标类似于:
<target name="create_myapp_jar">
<jar destfile="./production/myapp.jar" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="com.something.entrypoints.MyApp"/>
<attribute name="Class-Path" value="."/>
</manifest>
<fileset dir="./classes"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-cli-1.2.jar"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-codec-1.10-sources.jar"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-codec-1.10.jar"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-io-2.4.jar"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-lang-2.6.jar"/>
<zipfileset excludes="META-INF/*.SF" src="./lib/commons-pool2-2.2.jar"/>
lots and lots of more JARs here....
</target>
代码由 Eclipse (Export runnable Jar) 生成,并由我稍作改动。
包含的罐子列表实际上很长。我构建了几个这样的 fat-jars,我想知道如何避免列出每个目标的 <zipfileset> 语句?
如何将它们全部组合在一起,然后从每个 fat-jar 构建目标中引用它们?一切都是为了不让我的 build.xml 膨胀到成百上千行。如果我可以在某个地方有一个定义,那么向每个目标添加新 JAR 的痛苦也会消失。
【问题讨论】: