Ich hatte eine deploy.ant
Datei, in der der gesamte Build-Prozess wurde, einschließlich Kopieren von Dateien, Ausführen des Protobuf-Compiler und all das getan. Jetzt, wo ich auf Maven umschalte, habe ich pom.xml
Dateien, die diese Aufgaben erledigen sollen. Ich bin fast alles erledigt, außer dem deploy.ant
Skript, das mir geblieben ist.Running Ant Aufgabe auf Maven: Kopieren, Löschen von Dateien innerhalb der Projekte
Dieses Skript enthält das Bereinigen, Vorbereiten, Erstellen und Bereitstellen von Zielen. Was ich von hier brauche, ist Reinigung, Vorbereitung und nur ein Teil des Bauziels, weil die anderen Teile von den anderen pom.xml
s getan werden.
Also in meinem deploy.ant
Ich habe den folgenden Code-Schnipsel:
<!-- 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}" />
und dies ist der Maven Teil bin ich gekommen oben mit:
<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>
Aber wie man sehen kann ich ganz bin verwirrt mit all diesen Wegen und wie man sie in Maven integriert. Ich vermute, dass der Code, den ich geteilt habe, korrekt ist, da Maven keine Ahnung hätte, was die "${install.dir}"
ist.
Also meine Frage ist, wie solche Aufgaben in maven mit diesem Plugin zu integrieren? Ist es einfach, die Ameisenschnipsel in die Tags des Plugins zu kopieren? Wenn ja, wie wird es jemals verstehen, was mit den Ameiseneigenschaften gemeint ist? Wege?
Der Build-Prozess soll mit anderen Mitteln durchgeführt werden, was ich will, ist einfach kopieren/Einfügen von Dateien in relevante Projektordner. Brauche ich noch dieses "Assembly" -Plugin? –
In der Tat wird es die Art, wie Ihr Distributionsordner erstellt wird, von dem Moment an trennen, in dem es aufgerufen wird. Wenn ich Maven verwende, finde ich es oft besser als maven-ant-plugin. Also, ja, du wirst es brauchen, nur um deinen Build zu klären. – Riduidel
Es gibt einige Probleme dabei. Zuerst muss ich es nur durch 'install' Phase laufen lassen, ist das möglich? Kann das auch bei sonst-Bedingung funktionieren? –