java - 如何更改 Ant 的文件集命令的目标目录?

标签 java eclipse deployment ant jar

我有一个 Java 库的 Ant 构建文件。它看起来像这样:

<project ... ><target ... >
<jar destfile="C:\path\to\export.jar">
    <manifest> ... </manifest>
    <fileset dir="C:\path\to\bin" />
    <fileset dir="C:\path\to\src" />
    <fileset dir="C:\path\to\doc" />
    <zipfileset src="C:\path\to\included\library.jar" />
</jar>
</target></project>

唯一的问题是我的 JavaDoc 被直接导出到生成的 jar 文件的根目录中。本质上,我想要一些相当于 <copydir> 的东西可以在 <jar> 中使用的命令命令。

我想要的结构是这样的:

export.jar
  META-INF
    Manifest.MF
  com
    example
      whatever
        Blah.class
        Blah.java
  org
    external
      somelibrary
        Magic.class     // contents of the included library jar file
  doc
    // javadoc files here

目前的结构是:

export.jar
  META-INF
    Manifest.MF
  com
    example
      whatever
        Blah.class
        Blah.java
        // some javadoc files here
  org
    external
      somelibrary
        Magic.class     // contents of the included library jar file
  // more javadoc files here

我目前的“解决方案”是省略文档 <fileset>命令,然后,一旦 jar 导出,进入 Windows 资源管理器并右键单击7-Zip打开存档;然后我可以删除 doc目录在那里就好了。然而,这完全违背了 Ant 作为一个完全自动化的构建系统的目的。

如果重要的话,这个文件最初是由 Eclipse 使用 Runnable JAR 导出器生成的。但是,我显然需要修改它以添加源文件等,因为它是一个库而不是一个可运行的 jar。我将它导出为可运行的 jar,以便让 Eclipse 打包到所需的库中;显然,构建路径上的库无法通过标准文件导出JAR 文件 导出。

最佳答案

一个 jar 实际上就像一个 zip 文件。因此你可以使用 zipfileset .它的属性prefix正是您要找的。

zipfileset命令可以通过 src 接受一个 zip 文件或通过 dir 的文件系统目录.使用后者,您可以添加以下命令:

<zipfileset dir="C:\path\to\doc" prefix="doc" />

另外值得注意的是,zipfileset 支持文件集的所有属性。因此,如果您只想在特定位置包含一个文件,您可以使用:

<zipfileset file="C:\path\to\doc\file.txt" prefix="doc" />

进一步阅读:http://ant.apache.org/manual/Types/zipfileset.html

关于java - 如何更改 Ant 的文件集命令的目标目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16783972/

相关文章:

IntelliJIDEA for Scala 中的 Java 字节码反编译器

java - hibernate 生成查询,无需所有外连接获取

java - 如何以编程方式读取 Java 接口(interface)?

eclipse - 无法在 Eclipse 上安装 Google Cloud Tools

java - Eclipse、Java如何让WindowBuilder创建不嵌套的字段

java - 带有Tomcat的Spring MVC不会打开Hello World html页面

eclipse - 我可以使用 Groovy 编写 Eclipse 插件吗?

c# - .NET 构建和部署

scala - 使用 uberjar 部署时覆盖 Typesafe 配置中的多个配置值

php - 部署 PHP 和 Node JS 项目