我有一个用于 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 Explorer 并右键单击→ 7-Zip → Open Archive;然后我可以把doc
目录放在那里就好了。然而,这完全违背了 Ant 作为一个完全自动化的构建系统的目的。
如果重要的话,这个文件最初是由 Eclipse 使用 Runnable JAR 导出器生成的。但是,我显然需要对其进行修改以添加源文件等,因为它是一个库,实际上并不是一个可运行的 jar。我将它导出为一个可运行的 jar,让 Eclipse 打包到所需的库中;显然,构建路径上的库无法通过标准File → Export → JAR file导出。