使用Ant将非代码资源添加到jar文件中
问题描述:
我正在将我的java应用程序打包到jar文件中。我正在使用蚂蚁和日食。我需要在jar文件中直接在根文件夹下包含几个单独的非代码文件(xml和txt文件),而不是与代码位于同一位置。使用Ant将非代码资源添加到jar文件中
我想使用includesfile,但似乎并没有工作,这是我的Ant目标:
<target name="distribute" depends="compile" includesfile="readthis.txt">
<jar destfile="${distributionDir}/myjar.jar" >
<fileset dir="${outputDir}"/>
<fileset dir="${sourceDir}"/>
</jar>
</target>
以上正常工作时,我省略includesfile说法。另外,我需要添加多个非代码文件。这些文件直接位于Eclipse的根项目文件夹下,不在任何Java包中。
另外,正如你在上面看到的,我基本上也包括jar到我的源代码。有没有办法告诉jar任务把源代码放到编译代码的单独文件夹中?
作为一个编译或构建任务,Ant可以轻松地将源代码与编译后的类分开。但是有没有办法在jar文件中做到这一点?
非常感谢您的时间!
答
你不应该在目标一个includesfile
属性开始,我怀疑你无论如何误解的地步 - 这个想法是,你includesfile
指定文件中包含的模式进行哪些文件包括,如果你不想把它们放到你的Ant文件中。
它让我感到你所需要的是一个额外的文件集,其中包含你需要的相应文件。例如,对于readthis.txt
:
<target name="distribute" depends="compile">
<jar destfile="${distributionDir}/myjar.jar" >
<fileset dir="${outputDir}"/>
<fileset dir="${sourceDir}"/>
<fileset file="readthis.txt" />
</jar>
</target>
我也建议您创建的资源一个新的目录,所以你可以做:
<target name="distribute" depends="compile">
<jar destfile="${distributionDir}/myjar.jar" >
<fileset dir="${outputDir}"/>
<fileset dir="${sourceDir}"/>
<fileset dir="${resourcesDir}" />
</jar>
</target>
没有麻烦。这也将保持你的目录结构更清洁,从而更容易从顶部向下查找事物。
谢谢!这当然有帮助。我想知道我是否也可以告诉jar任务将源和编译类分开?目前,源代码和类都位于相同的包结构中,jar任务不应该保留输出和src文件夹吗? 这意味着当我展开jar时,我在myjar/code/my/package/file.java和file.class中看到 我认为jar任务可以保存如下文件夹: myjar/code/my/package /source/file.java - 并单独使用 myjar/code/my/package/build/file.class 我是否在使用jar任务时丢失了某些内容? – denchr 2009-08-01 15:37:48