使用Ant将非代码资源添加到jar文件

时间:2009-08-01 14:53:31

标签: java ant jar

我正在将我的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文件中做到这一点?

非常感谢你的时间!

1 个答案:

答案 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>
没有麻烦。这样也可以使您的目录结构更加清晰,从而可以更轻松地从上到下查找内容。