如何 运行 build.xml 中的 zip 目标

How to run a zip target in build.xml

我想在 build.xml 构建项目时 运行 一个 zip 目标(清理并构建)

<target name="zipme" description="Zip the application to the sample project"> 
<property name="build.classes.dir" location="/home/NetBeansProjects/AdditionalSamples"/>
<property name="examples" location="${build.classes.dir}/src/org/myorg/additionalsamples/"/>
<zip basedir="../MySampleApplication" destfile="${examples}/MySampleApplicationProject.zip">
<exclude name="**/build/"/>
 <exclude name="**/dist/"/> 
<exclude name="**/nbproject/private/"/>
</zip>
</target>

看来您需要在任务树中的适当位置复制任务。 它可以在清理任务之后完成,并将模板从原始位置复制到模块中的专用目录中。复制任务支持 overwrite 属性,以防您有很多模板。

要生成 zip,只需将 zip 任务标记为构建任务的依赖项,每次 运行 清理和构建时都会生成 zip 存档

task zipme 依赖于clean,但是为什么依赖于build-init?这是不正确的。当你 运行 构建它时,假设在最后一步之前的某个阶段 运行 zipme。您可以创建 "clean and build" 项目并查看执行任务的顺序,第一个、最后一个等等。

我在 Netbeans 中制作了一个纯 Java 项目示例,当我 运行 从菜单中清理和构建时,我可以在输出中看到:

ant -f C:\Projects\NetBeansProjects\Sample -Dnb.internal.action.name=build jar
init:
Deleting: C:\Projects\NetBeansProjects\Sample\build   \built-jar.properties
deps-jar:
Updating property file: C:\Projects\NetBeansProjects\Sample\build\built-jar.properties
compile:
Copying 1 file to C:\Projects\NetBeansProjects\Sample\build
Nothing to copy.
To run this application from the command line without Ant, try:
java -jar "C:\Projects\NetBeansProjects\Sample\dist\Sample.jar"
zipme:
Building zip: C:\Projects\NetBeansProjects\Sample\examples\SampleProject.zip
jar:
BUILD SUCCESSFUL (total time: 0 seconds)

请注意,我从您的样本中提取了 zipme 任务。我所做的唯一更改是 jar stage 依赖于 zipme stage

<target depends="init,compile,-pre-jar,-do-jar,-post-jar,zipme" description="Build JAR." name="jar"/>

就我而言,在简单的 java 项目中,没有 build-init 阶段。所以我选择了 jar 阶段,因为它是我的最终阶段。也许你有另一种类型的项目(web、jee),任务顺序和最后阶段可能不同。实际上没有必要在最后阶段定义 zipme 任务,只需要确定确切的时间以及在什么情况下你需要执行 zipme 任务。