2010-04-13 45 views
1

我需要在创建项目时将jar文件从一个目录复制到另一个目录。放置声明:在Apache Ant中复制jar文件

<copy file="${test.dir}/MyFirstTest.jar" todir="${share.path}"/> 

当项目建成独自工作正常,但如果我清理并生成项目,我得到一个警告,通知我说,$ {} test.dir /目录尚未创建。如果我理解正确,我应该能够创建一个“目标”并为此操作指定一个依赖项,但我不确定要指定什么依赖项。我需要使用哪些系列语句来确保复制将发生,无论我是否清理并构建或只是构建项目?

请让我知道是否需要进一步澄清。

仅供参考我正在使用Netbeans 6.8构建我的项目。

回答

2

假设你有build,dist和javadoc文件夹在干净的时候这样做。

<!-- Remove all output generated from this build script --> 
    <target name="clean" description="Clean project"> 
     <delete dir="${build}" /> 
     <delete dir="${dist}" /> 
     <delete dir="${javadoc}" /> 
    </target> 

    <!-- Initialize all elements needed for the Build --> 
    <target name="init"> 
     <!-- Create the time stamp --> 
     <tstamp /> 
     <!-- Create the build directory structure used by compile 
     and copy the deployment descriptors into it--> 
     <mkdir dir="${build}/classes" /> 
     <mkdir dir="${dist}" /> 
     <mkdir dir="${javadoc}" /> 
    </target> 

<!-- Write a target such as this --> 
    <target name="docopy" depends="init" description="do the copy"> 
     <copy file="${test.dir}/MyFirstTest.jar" todir="${dist}"/> 
    </target> 

当您运行ant docopy它将首先运行init,然后运行docopy任务。 您可以创建其中包含depends =“docopy”的其他任务或将副本文件任务移动到init本身。

1

如果我的理解正确,我应该能够创建一个“目标”并为此操作指定依赖项,但我不确定指定什么依赖项。

好,无论是添加一个依赖于实际创建${share.path}如果是有道理的或引进新的目标,如果它不存在,它创建目录的目标。这通常是做某种init的目标。然后,添加依赖关系是这样的:

<target name="copy-jar" depends="target-a, target-b"> 
    <copy file="${test.dir}/MyFirstTest.jar" todir="${share.path}"/> 
</target> 

你也可以简单地尝试创建目录之前复制的库:

<mkdir dir="${share.path}" failonerror="false"> 
<copy file="${test.dir}/MyFirstTest.jar" todir="${share.path}"/>