копирование jar-файла в Apache Ant - PullRequest
1 голос
/ 13 апреля 2010

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 13 апреля 2010

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

1 голос
/ 13 апреля 2010

Если я правильно понимаю, я должен иметь возможность создать «цель» и указать зависимость для этой операции, но я не уверен, какую зависимость указать.

Ну, либо добавьте зависимость к цели, которая фактически создает ${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}"/>
...