2009-08-01 148 views
21

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

非常感谢您的时间!

回答

34

你不应该在目标一个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> 

没有麻烦。这也将保持你的目录结构更清洁,从而更容易从顶部向下查找事物。

+0

谢谢!这当然有帮助。我想知道我是否也可以告诉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

相关问题