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 der Dokumentation zur Verwendung von Faktor-IPS-Projekten als OSGi-Bundles, im Abschnitt META.INF/MANIFEST.MF beschrieben.
- Das handgeschriebene Manifest muss von Maven übernommen werden:
<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>
- 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"/>
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