(Deutsch) Verwendung von Faktor-IPS-Projekten als Maven-Dependencies

Sorry, this entry is only available in German. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

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

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.

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"/>

Zusätzlich empfehlen sich einige Einstellungen in Maven, damit in den gebauten JARs alle benötigten Informationen landen:

  • 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>
    
  • 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>
    

Faktor-IPS-Build mit Maven

Wollen Sie nicht nur die von Faktor-IPS in Eclipse gebauten Artefakte einchecken und in Maven-Bundles verwenden sondern auch den Faktor-IPS-Build z.B. auf einem Buildserver laufen lassen, ist dies mittels des Maven-Plugins Tycho und einem damit gestarteten Headless Eclipse möglich. Kontaktieren Sie uns gerne bei Fragen dazu. Für ein eigenes Maven-Plugin welches diesen Schritt vereinfacht suchen wir derzeit noch Kunden, die sich an der Entwicklung beteiligen wollen.