我想在构建项目时运行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>

最佳答案

任务zipme依赖于clean,但是为什么依赖于build-init?这是不正确的。当您运行build时,它应该在最后一步之前的某个阶段运行zipme。您可以进行“清理并构建”项目,并查看执行的任务的顺序(首先,最后等)。

我在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阶段取决于zipme阶段

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


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

09-09 22:39