Java 使用Ant向jar文件添加非代码资源

Java 使用Ant向jar文件添加非代码资源,java,ant,jar,Java,Ant,Jar,我正在将java应用程序打包到jar文件中。我正在使用ant和eclipse。我需要在jar中直接在根文件夹下包含两个独立的非代码文件(xml和txt文件),而不是在代码所在的位置 我正在尝试使用IncludeFile,但这似乎不起作用,以下是我的ant目标: <target name="distribute" depends="compile" includesfile="readthis.txt"> <jar destfile="${distributionDir}

我正在将java应用程序打包到jar文件中。我正在使用ant和eclipse。我需要在jar中直接在根文件夹下包含两个独立的非代码文件(xml和txt文件),而不是在代码所在的位置

我正在尝试使用IncludeFile,但这似乎不起作用,以下是我的ant目标:

<target name="distribute" depends="compile" includesfile="readthis.txt">
    <jar destfile="${distributionDir}/myjar.jar" >
        <fileset dir="${outputDir}"/>
    <fileset dir="${sourceDir}"/>           
    </jar>
</target>

当我省略includeFile参数时,上面的方法可以很好地工作。另外,我需要添加多个非代码文件。这些文件直接位于Eclipse中的根项目文件夹下,而不在任何java包中

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

作为编译或构建任务,Ant可以轻松地将源代码与编译的类分开。但是,有没有一种方法也可以在jar文件中实现呢


非常感谢您的时间

您不应该在目标中首先使用
includefile
属性,而且我怀疑您误解了它的意义-想法是,如果您不想将文件放入Ant文件中,您使用
includefile
指定的文件包含要包含的文件的模式

我突然想到,您所需要的只是一个额外的文件集,其中包含您需要的适当文件。例如,对于
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任务时是否遗漏了一些东西?不,你错了。他们应该肩并肩。如果jar包含一个类似code/my/package/build/file.class的文件夹结构,那么就意味着包名应该是code.my.package.build。您也可以将源代码放入第二个JAR文件中。我明白您的意思。因此,像我所建议的那样,将对包命名产生影响。。。因此,一般来说,如果我想在jar文件中包含源代码,它必须与编译的构建位于同一文件夹中。