<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestFile>META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</execution>
</executions>
</plugin>
Verwendung von Faktor-IPS-Projekten als Maven-Dependencies
Motivation
In vielen Java-Projekten wird Maven als Build-Tool und zum Dependency-Management eingesetzt. Darum liegt es nahe, auch die Abhängigkeiten zwischen Faktor-IPS-Projekten über Maven abzubilden.
Einstellungen
In den referenzierten Projekten
-
Zuerst müssen in allen Faktor-IPS-Projekten, die per Maven referenziert werden sollen, einige Einstellungen aus der .ipsproject-Datei im Manifest (META-INF/MANIFEST.MF) duplizieren. Die Einstellungen sind in unter Verwendung des Manifest für Faktor-IPS-Projekte beschrieben.
-
Das handgeschriebene Manifest muss von Maven übernommen werden:
-
Die Modell- bzw. Produktordner sollten, sofern sie nicht in der Maven-üblichen Struktur liegen als Resource hinzugefügt werden:
<resource>
<directory>model</directory>
<targetPath>model</targetPath>
</resource>
-
Sofern Source-Code für Formeln generiert wird, muss Maven angewiesen werden, diesen auch im derived-Ordner zu bauen:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals><goal>add-source</goal></goals>
<configuration>
<sources><source>${project.basedir}/derived</source></sources>
</configuration>
</execution>
</executions>
</plugin>
In den referenzierenden Projekten
In den referenzierenden Faktor-IPS-Projekten muss dann in der Datei .ipsproject der IpsObjectPath angepasst werden. Anstelle der bisher referenzierten Projekte genügt ein Eintrag für den Maven-Classpath-Container:
<Entry container="JDTClasspathContainer" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER" reexported="false" type="container"/>
Maven-Version-Provider
Es ist es sinnvoll in der .ipsproject
-Datei den Maven Version Provider einzutragen: <Version versionProvider="org.faktorips.maven.mavenVersionProvider"/>
.
Dadurch wird die Version aus der pom.xml
ausgelesen und kann z.B für @since-Annotationen an neuen Klassen oder Attributen genutzt werden.
In der Table-of-Contents-XML-Datei werden dann statt der Version die Maven-Koordinaten als productDataVersion
eingetragen und zur Laufzeit damit die tatsächliche Version aus den pom.properties ausgelesen.
Erstellung von Faktor-IPS Projekten als Maven-Projekte
Faktor-IPS-Projekte können seit der Version 21.6 direkt als Maven-Projekte mittels Maven-Archetypes generiert werden. Genaueres dazu ist hier beschrieben.
Faktor-IPS-Build mit Maven
Mit dem Faktor-IPS Maven Plugin ist es einfach, einen zentralisierten Build mit einem Continuous-Integration-Server einzurichten. Nur das Modell und der Quellcode müssen eingecheckt werden, alle anderen generierten Dateien (derived sources) werden auf dem Build-Server erstellt. Dadurch werden fehleranfällige Merge-Konflikte reduziert, die durch unterschiedliche Entwicklungsumgebungen und Betriebssysteme verursacht werden.
Die Dokumentation des Faktor-IPS Maven Plugins wird automatisch mit jeder neuer Version angepasst und ist mit diesem Link zu finden: Dokumentation des Faktor-IPS Maven Plugin