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

den*_*chr 22 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>
Run Code Online (Sandbox Code Playgroud)

当我省略includesfile参数时,上面的工作正常.另外,我需要添加多个非代码文件.这些文件直接位于Eclipse中的根项目文件夹下,而不是任何Java包中.

另外,正如您在上面所看到的,我基本上也将jar包含在我的源代码中.有没有办法告诉jar任务将源代码放在编译代码的单独文件夹中?

作为编译或构建任务,Ant可以轻松地将源代码与已编译的类分开.但是有没有办法在jar文件中做到这一点?

非常感谢您的时间!

Jon*_*eet 38

你不应该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>
Run Code Online (Sandbox Code Playgroud)

我还建议您为资源创建一个新目录,这样您就可以:

<target name="distribute" depends="compile">
  <jar destfile="${distributionDir}/myjar.jar" >
    <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>
    <fileset dir="${resourcesDir}" />
  </jar>
</target>
Run Code Online (Sandbox Code Playgroud)

没有麻烦.这样也可以使您的目录结构更加清晰,从而可以更轻松地从上到下查找内容.