mvn archetype:generate -DarchetypeGroupId=org.faktorips.productdesigner -DarchetypeArtifactId=productdesigner-maven-archetype -DarchetypeVersion=<version>
Faktor-IPS Product Designer Archetype
Motivation
Um sein eigenes Produktprojekt mit dem Faktor-IPS Product Designer zu verwenden, muss die Spring-Boot-Anwendung lokal ausgeführt werden. Dieser Maven-Archetype hilft dabei, alle wichtigen Einstellungen zu treffen.
Voraussetzungen zur Verwendung
-
Java 21
Durchführung
Generierung des Faktor-IPS Projekts
Ausführen in der Kommandozeile:
Anschließend werden benötigte Parameter abgefragt.
Aus Eclipse heraus:
Da der Faktor-IPS Product Designer mit Java 21 gebaut wurde, muss das Eclipse mindestens in der Version 2023-12 verwendet werden.
Um ein Faktor-IPS Product Designer Projekt zu erstellen, klickt man auf Datei
→ Neu
→ Projekt…
→ Maven Projekt
. Im ersten Dialog des Wizards darauf achten, dass nicht Erstellen Sie ein einfaches Projekt
angehakt ist.
Auf der nächsten Seite des Wizards kann nach "org.faktorips.productdesigner" gefiltert werden, und die gewünschte Archetype-Version und somit die gewünschte Faktor-IPS Product Designer Version ausgewählt werden:
Auf der nächsten Seite können dann die Basis-Parameter für das neu anzulegende Projekt eingegeben werden:
Wenn die Checkbox run archetype generation interactively
nicht angehakt ist, muss man in der Eclipse-Console nicht mit der Tastatur bestätigen, sondern das Projekt wird gleich erstellt.
Verwendete Parameter
… für das Generieren des Projekts
-
groupId: die Group-ID des Maven-Projekts
-
artifactId: die Artifact-ID des Maven-Projekts
-
version: die Version des Maven-Projekts
-
package: die grundlegende Package-Struktur, z.B. org.faktorips.example
-
PD-ApplicationName: der Name der Applikation, und der Spring-Boot-Klasse ohne dem postfix Application z.B. Hausrat wird zu HausratApplication.java
-
IPS-ProductProjectPath: der Pfad zum Produktprojekt, das bearbeitet oder angezeigt werden soll
-
IPS-ModelDependencyGroupId: die Group-ID für die Abhängigkeit zum Modellprojekt
-
IPS-ModelDependencyArtifactId: die Artifact-ID für die Abhängigkeit zum Modellprojekt
-
IPS-ModelDependencyVersion: die Version für die Abhängigkeit zum Modellprojekt
-
IPS-AdditionalRepos: NONE, falls das Produktprojekt von weiteren Produktprojekten abhängt, kann hier eine Factory-Klasse angegeben werden, oder NONE, wenn es keine weiteren Abhängigkeiten gibt
-
readOnlyMode: ob der Produktdesigner im Read-Only-Modus gestartet wird
Additional Repositories
Falls ein Produktprojekt von anderen Produktprojekten beziehungsweise von anderen Repositories abhängt, kann dies über eine Factory-Klasse konfiguriert werden.
import org.faktorips.runtime.ClassloaderRuntimeRepository;
import org.faktorips.runtime.formula.groovy.GroovyFormulaEvaluatorFactory;
public class ErwProduktRuntimeRepositoryFactory {
public static final ClassloaderRuntimeRepository INSTANCE = ClassloaderRuntimeRepository
.create("erw-produkt/internal/faktorips-repository-toc.xml");
static {
// Enum-Content im Modell Projekt
INSTANCE.addDirectlyReferencedRepository(ErwModellRuntimeRepositoryFactory.INSTANCE);
INSTANCE.setFormulaEvaluatorFactory(new GroovyFormulaEvaluatorFactory());
}
private RuntimeRepositoryFactory() {
// Soll nicht instanziiert werden
}
}
Ebenfalls muss das pom.xml
um das erweiterte Produkt ergänzt werden.
<dependency>
<groupId>de.faktorzehn</groupId>
<artifactId>modell</artifactId>
<version>1.0.0</version>
</dependency>
<!-- Erw-Produkt händisch hinzufügen -->
<dependency>
<groupId>de.faktorzehn</groupId>
<artifactId>erw-produkt</artifactId>
<version>1.0.0</version>
</dependency>