2010-04-13 3 views
1

Мне нужно скопировать файл jar из одного каталога в другой, когда мой проект будет построен. Размещение заявление:копирование файла jar в Apache Ant

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

прекрасно работает, когда проект будет построен в одиночку, но если я чищу и построить проект, я получаю предупреждение, сообщающее мне, что $ {test.dir}/каталог не был создан еще , Если я правильно понимаю, я должен иметь возможность создать «цель» и указать зависимость для этой операции, но я не уверен, какую зависимость указать. Какую серию утверждений нужно использовать для обеспечения того, чтобы эта копия произошла, очищаю ли я и строю или просто создаю проект?

Пожалуйста, дайте мне знать, если потребуется какое-либо уточнение.

FYI Я использую Netbeans 6.8 для создания своего проекта.

ответ

2

Предполагая, что вы создаете папки, 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. Вы можете создать другие задачи, в которых есть значение = «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}"/> 
Смежные вопросы