我正在将我的java应用程序打包到一个jar文件中。我正在使用蚂蚁和日食。我需要在jar中直接在根文件夹下包含几个单独的非代码文件(xml和txt文件),而不是与代码在同一个地方。
我正在尝试使用includesfile,但这似乎不起作用,这是我的蚂蚁目标:
<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文件中做到这一点?
非常感谢你的时间!
答案 0 :(得分:37)
你不应该在目标中拥有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>
没有麻烦。这样也可以使您的目录结构更加清晰,从而可以更轻松地从上到下查找内容。