我已经开始研究一个项目,该项目目前从Eclipse项目中生成一个单片JAR文件。基本上,有一个Ant脚本可以在Eclipse Java Builder运行的任何时候运行,并获取Eclipse Java Builder的输出(.class文件)并将其打包到JAR文件中。然后将该JAR文件放在一个公共目录中,以便其他工具可以抓取它以获取最新版本。
这对团队很有效,所以我不想太多改变它,但是,JAR中有很多不必要的文件使它比它需要的大得多。我想知道是否有可能在我上面描述的相同类型的框架(Eclipse + Ant)中将大型JAR文件拆分为更小,更易于管理的JAR文件。例如:
com.company.project.thing1 com.company.project.thing2 com.company.project.thing3
这三件事都打包在JAR中。相反,我只想在一个JAR文件中使用thing1和thing2而在第二个JAR文件中使用thing3。
我确实意识到我可以有单独的项目,但我想看看是否有可能将项目组合在一起仍然有意义。任何帮助将不胜感激。
谢谢。
每个请求,Ant构建脚本(我只包括jar任务 - 另一个只是干净):
<target name="jar" description="Deploys the JAR file." depends="clean">
<mkdir dir="${dir.dist}">
<!-- Build the JAR file containing the classes. -->
<jar destfile="${dir.dist}/${build.name}.jar">
<!-- Generate the MANIFEST.MF file. -->
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Release-Version" value=${version}" />
</manifest>
<zipfileset dir="${dir.build}" />
</jar>
</target>
答案 0 :(得分:4)
如果你使用includes
{和zipfileset
魔法的macrodef
工具,你可能会得到如下内容:
<macrodef name="packaging">
<attribute name="package"/>
<sequential>
<jar destfile="${dir.dist}/${build.name}-@{package}.jar">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Release-Version" value=${version}"/>
</manifest>
<zipfileset dir="${dir.build}" includes="com/acme/@{package}/**/>
</jar>
</sequential>
</macrodef>
<packaging package="package1"/>
<packaging package="package2"/>
<packaging package="package3"/>
答案 1 :(得分:0)