【问题标题】:adding non-code resources to jar file using Ant使用 Ant 将非代码资源添加到 jar 文件
【发布时间】:2010-11-16 01:10:02
【问题描述】:

我正在将我的 java 应用程序打包成一个 jar 文件。我正在使用蚂蚁和日食。我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件(xml 和 txt 文件),而不是在与代码相同的位置。

我正在尝试使用包含文件,但这似乎不起作用,这是我的 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 文件中做到这一点?

非常感谢您的宝贵时间!

【问题讨论】:

    标签: java ant jar


    【解决方案1】:

    你不应该在 target 中有一个 includesfile 属性,而且我怀疑你还是误解了它的意思 - 这个想法是你用 @ 指定的文件987654322@ 包含要包含的文件的模式,如果您不想将它们放入 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>
    

    毫不费力。这也将使您的目录结构更清晰,更容易从上到下查找内容。

    【讨论】:

    • 谢谢!这当然有帮助。我想知道我是否也可以告诉 jar 任务将源代码与编译的类分开?此时源码和类都位于同一个包结构中,jar任务不应该保留output和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 文件中包含源代码,它 必须 与编译构建。
    猜你喜欢
    • 2011-04-26
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2014-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多