如何通过ant将完整的文件夹添加到jar文件中

时间:2010-01-18 15:40:49

标签: ant jar

我想创建一个像我一样的“胖”jar,不仅包括通常的类,清单文件等,还包括我的'libs'文件夹。

我尝试过:

<jar destfile="myjar.jar" update="yes" basedir="${libs.dir}"/>

但是这会将'libs'中的文件添加到jar文件的根目录中,我希望在jar中拥有libs文件夹(当然包含它包含的所有内容)

我可以在jar中自己创建lib文件夹,然后将文件添加到jar中的特定位置吗?

4 个答案:

答案 0 :(得分:9)

如果您指定将目录用作文件集的根目录,那么您只需匹配目录即可保留结构。

<jar destfile="myjar.jar" >
  <fileset dir=".">
    <include name="**/${libs.dir}/**"/>
  </fileset>
</jar>

答案 1 :(得分:1)

使用此ant扩展程序:http://one-jar.sourceforge.net/

还有Eclipse插件:FatJar

答案 2 :(得分:1)

您必须执行以下操作。具体来说, zipfileset 命令。你基本上是在说你要构建$ {build.name} .jar(你可以将路径硬编码为“myjar.jar”或者其他东西),然后将各种文件添加到JAR中。

希望这有帮助!

<jar destfile="${dist}/${build.name}.jar">

    <!-- Generate the MANIFEST.MF file. -->
    <manifest>
        <attribute name="Built-By" value="${user.name}" />
        <attribute name="Release-Version" value="${version}" />
        <attribute name="Main-Class" value="my.lib.Main" />
            <attribute name="SplashScreen-Image" value="TitleScreen.png" />
        <attribute name="Class-Path" value="${classpath}" />
    </manifest>

    <zipfileset dir="${build.dir}" />
    <zipfileset dir="${resources}" />

    <fileset file="${resources}/icons/misc_icons/TitleScreen.png" />
</jar>

答案 3 :(得分:1)

http://www.vertigrated.com/blog/2009/11/how-to-bundle-command-line-programs-into-a-single-executable-jar-file/