У меня был файл deploy.ant
, в котором был выполнен весь процесс сборки, включая копирование файлов, выполнение компилятора protobuf и все такое. Теперь, когда я переключаюсь на maven, у меня есть файлы pom.xml
, которые должны выполнять эти задачи. Я сделал почти все, кроме сценария deploy.ant
, с которым я остался.Запуск задачи Ant на maven: копирование, удаление файлов в проектах
Этот сценарий имеет очистку, подготовку, создание и развертывание целей. Мне здесь нужно очистить, подготовить и только часть цели здания, потому что другие части сделаны другим pom.xml
s.
Так в моем deploy.ant
я следующие фрагменты кода:
<!-- just copying sh and ant files to release folder. -->
<target name="clean">
<delete dir="${install.dir}" />
</target>
<target name="prepare">
<mkdir dir="${install.dir}" />
<copy file="${template.dir}/run.all.ant" todir="${install.dir}" />
<copy file="${template.dir}/run.all.sh" todir="${install.dir}" />
<copy file="${template.dir}/kill.all.sh" todir="${install.dir}" />
<copy file="${template.dir}/packLogs.sh" todir="${install.dir}" />
</target>
.
.
.
.
<!-- copy template files and configurations -->
<if>
<available file="${component.project.dir}/conf/config.properties" />
<then>
<copy file="${component.project.dir}/conf/config.properties" todir="${component.release.dir}/conf" />
</then>
<else>
<echo message="${component.project.dir} does not provide a bundle config - using default from release bundle" />
<copy file="${template.dir}/config.properties" todir="${component.release.dir}/conf" />
</else>
</if>
<if>
<available file="${component.project.dir}/plans" type="dir" />
<then>
<copy todir="${component.release.dir}/plans">
<fileset dir="${component.project.dir}/plans" includes="**" />
</copy>
</then>
</if>
.
.
<copy file="../group1/someProject.mw/conf/log4j.xml" todir="${component.release.dir}/conf" />
<copy file="${template.dir}/run.ant" todir="${component.release.dir}" />
<copy file="${template.dir}/run.sh" todir="${component.release.dir}" />
и это Maven часть я придумал:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Copying .sh and .ant files to release folder</echo>
<basename file="${component.project.dir}" property="component.name" />
<property name="component.release.dir" value="${install.dir}/${component.name}" />
<delete dir="${install.dir}" />
<mkdir dir="${install.dir}" />
<copy file="${template.dir}/run.all.ant" todir="${install.dir}" />
<copy file="${template.dir}/run.all.sh" todir="${install.dir}" />
<copy file="${template.dir}/kill.all.sh" todir="${install.dir}" />
<copy file="${template.dir}/packLogs.sh" todir="${install.dir}" />
<copy file="../group1/someProject.mw/conf/log4j.xml" todir="${component.release.dir}/conf" />
<copy file="${template.dir}/run.ant" todir="${component.release.dir}" />
<copy file="${template.dir}/run.sh" todir="${component.release.dir}" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
Но как вы можете видеть, что я довольно путают со всеми этими путями и как их интегрировать в maven. Я подозреваю, что код, который я поделил, верен, так как maven не знал бы, что такое "${install.dir}"
.
Итак, мой вопрос: как интегрировать такие задачи в maven с помощью этого плагина? Является ли это просто копирование фрагментов муравьев в теги плагина? Если да, то как он когда-либо поймет, что подразумевается под муравьиными свойствами; пути?
Процесс сборки предполагается делать другими способами, я хочу просто скопировать/вставить файлы в соответствующие папки проекта. Мне все еще нужен этот «сборный» плагин? –
Фактически, он будет разделять способ создания вашей папки распространения с момента ее вызова. При использовании maven я часто считаю, что это лучше, чем использование maven-ant-plugin. Итак, да, вам это понадобится, просто чтобы прояснить вашу сборку. – Riduidel
Есть некоторые проблемы. Во-первых, мне нужно, чтобы он работал только через фазу «install», возможно ли это? Кроме того, может ли это обработать условие if-else? –