在Ant jar任务期间创建目录结构

时间:2012-03-12 20:38:23

标签: java ant jar

我想创建一个具有以下目录结构的jar:

thejar.jar/
    classes/ --> where all classes go
    lib/ --> where all dependencies go
    res/ --> where all non-classpath resources go (scripts, etc.)
    META-INF/

这是我的蚂蚁任务:

<jar destfile="dist/main/thejar.jar">
    <!-- Create the manifest -->
    <manifest>
        <!-- JAR should be sealed. -->
        <attribute name="Sealed" value="true" />
    </manifest>

    <!-- Copy main build directory to classes/ directory in JAR. -->
    <fileset dir="dist/main/classes" includes="build/main"/>

    <!-- Copy main library directory to lib/ directory in JAR. -->
    <fileset dir="dist/main/lib" includes="lib/main"/>

    <!-- Copy main resources directory to res/ in JAR. -->
    <fileset dir="dist/main/res" includes="res/main"/>
</jar>

如果我理解正确,那应该是:

  • build/main中的所有构建(.class)文件复制到dist/main/classes
  • 将所有lib/main个依赖项复制到dist/main/lib
  • 将所有res/main个文件复制到dist/main/res
  • dist/main/* JAR到thejar.jar

JAR任务执行时没有错误,但当我去查看thejar.jar的内容时,我只看到META-INF /(我上面提到的子目录都没有)。

这里发生了什么?提前谢谢!

1 个答案:

答案 0 :(得分:3)

您希望jar任务将build/main中的文件复制到jar的dist/main/lib中,但

<fileset dir="dist/main/classes" includes="build/main"/>

表示将dist/main/classes/build/main中的文件打包到jar文件中。

看一下Ant-Jar任务文档中的示例:

<jar destfile="${dist}/lib/app.jar">
    <fileset dir="${build}/classes"
             excludes="**/Test.class"
    />
    <fileset dir="${src}/resources"/>
</jar>
  

(上面的代码)将$ {build} / classes目录中的所有文件以及$ {src} / resources目录中的所有文件一起放入$ {dist} / lib目录中名为app.jar的文件中。 / p>

为了实现您的请求,我认为您可以将具有<copy>任务的类,资源和依赖项复制到您想要的目录结构中,然后将目录挂起。