- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FSM Modul mit maven bauen wenn parent pom schon belegt?
Hallo Community,
ich mรถchte gerne ein FSM Modul mit Hilfe von maven bauen. Das letzte Mal, als ich das machen musste - um den GitHub - e-Spirit/scheduleexecutor: Example and Blueprint shown on #DevCon 2018 zu bauen , habe ich firstspirit-module-parent-pom und co von e-AG ยท GitHub heruntergeladen, installiert und mich richtig lange gequรคlt habe :-), bis es funktioniert hat.
Im pom.xml von schedulexecutor ist der parent eingetragen
<parent>
<groupId>com.espirit.ps.maven</groupId>
<artifactId>firstspirit-module-parent-pom</artifactId>
<version>3.0.0</version>
</parent>
Das Problem, dass ich jetzt mit meinem Modul habe, ist dass ich schon einen Parent habe, und zwar Spring Boot.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Hat jemand das Problem schon gehabt ? Kann ich irgendwie trotzdem die E-Spirit Plugins benutzen? Und wie? Im Moment bastele ich noch mit ant eine fsm Datei zusammen und ich kann das auch installieren aber die Resourcen haben keine richtige Versionen.
Gruร,
Ana
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielleicht kann man das damit lรถsen: Maven โ Introduction to the Dependency Mechanism
Habe ich selber aber noch nicht ausprobiert.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Vielleicht kann man das damit lรถsen: Maven โ Introduction to the Dependency Mechanism
Habe ich selber aber noch nicht ausprobiert.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Danke schรถn!
Das ist vermutlich die einzige Mรถglichkeit. Ich bin aber lange noch nicht am Ziel ๐
Ich habe ein Haufen XML aus firstspirit-module-parent-pom/pom.xml at master ยท e-Spirit/firstspirit-module-parent-pom ยท GitHub kopiert und zwar die ganzen plugins und profiles und oben in meinem pom
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.espirit.ps.maven</groupId>
<artifactId>firstspirit-module-parent-pom</artifactId>
<version>3.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
eingefรผgt.
Mit mvn package wird dann eine fsm Datei generiert aber irgendwas muss ich noch konfigurieren weil das Ergebnis module-isolated.xml enthรคlt noch alle Platzhalter
<module>
<name>${project.name}</name>
<displayName>${project.name} (L, I)</displayName>
<version>${project.version}</version>
<description>${project.description}</description>
<vendor>${project.organization.name}</vendor>
<components>
<web-app scopes="project">
<name>Example SpringBoot-Webapp</name>
<description> Mini App um zu testen, das Spring Boot funktioniert</description>
<web-xml>WEB-INF/web.xml</web-xml>
<web-xml>web.xml</web-xml>
<web-resources>
<resource target="WEB-INF/classes" >classes/application.properties</resource>
${module.resources.global.isolated.web}
</web-resources>
</web-app>
</components>
<resources>
${module.resources.global.isolated}
</resources>
</module>
Was mich noch interessieren wรผrde ist, muss ich in module-resource-plugin jede einzelne jar als resource eintragen?
<plugin>
<groupId>com.espirit.ps.psci</groupId>
<artifactId>module-resource-plugin</artifactId>
<version>0.1</version>
<executions>
<execution>
<id>generate-module-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<defaultConfiguration>
<scope>module</scope>
<components>web</components>
</defaultConfiguration>
<resources>
<resource>
<identifier>${project.groupId}:${project.artifactId}</identifier>
<path>lib/${project.artifactId}-${project.version}-classes.jar</path>
</resource>
... mรผssen hier meine jars definiert werden?
</resources>
</configuration>
</execution>
</executions>
</plugin>
Oder erkennt das Plugin - soweit es richtig konfiguriert ist - was meine dependencies sind. Ich hoffe auf letzteres.
Ist รผberhaupt irgendwo auf github oder in der Doku ein Bespiel - auรer ScheduleExecutor , wie so ein pom.xml - bzw. ein ganzes Projekt auszusehen hat?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Die module.xml muss alle Resource enthalten. Deswegen baue ich i.d.R. ein fat-Jar, welche alle Abhรคngigkeiten enhรคlt.
- Die Platzhalter sind vermutlich noch vorhanden, da das Resource Filterring nicht eingeschaltet ist.
Ich muss sagen, ich bin kein Fan davon ein Plugin in das Build zu zwingen, nur um eine Ordnungsstruktur, zip und umbenennen zu erreichen. Assembly und Ant Plugin reichen da i.d.R. aus.
Mit dem FS Maven Plugin kenne ich mich leider nicht aus. Wie erwรคhnt nutze ich meist einfach Assembly/Shade und Ant Plugin um das FSM zu erstellen. Damit habe ich volle Kontrolle.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
ja, das habe ich dann doch auch gemacht - assembly und rename. Nur die resource-Liste konnte ich nicht automatisch (in Maven build) erzeugen.
Ich habe jetzt einen manuellen Weg gefunden, der mich halbwegs glรผcklich macht
1) mvn dependency:list -DoutputFile=target/dependencies.txt
Ergebnis sieht so aus
org.springframework.boot:spring-boot-starter-web:jar:2.2.2.RELEASE:compile
org.springframework.boot:spring-boot-starter:jar:2.2.2.RELEASE:compile
...
2) GenerateResourceEntriesFromMavenDependencies.java (siehe unten) im IDE ausfรผhren
Ergebnis sieht so aus
<resource name="org.springframework.boot:spring-boot-starter-web" version="2.2.2.RELEASE">lib/spring-boot-starter-web-2.2.2.RELEASE.jar</resource>
<resource name="org.springframework.boot:spring-boot-starter" version="2.2.2.RELEASE">lib/spring-boot-starter-2.2.2.RELEASE.jar</resource>
...
3) Ergebnis in module.xml reinkopieren
---
public class GenerateResourceEntriesFromMavenDependencies
{
public static void main(String[] args)
{
String dependencyFile="C:/gbn/dev/helpdesk/target/dependencies.txt";
if (args.length>0)
{
dependencyFile=args[0];
}
else
{
System.out.println("no arguments given, revert to default");
}
System.out.println("Using dependency file "+dependencyFile);
Path path = Paths.get(dependencyFile);
try (Stream<String> lines = Files.lines(path)) {
lines.forEach(GenerateResourceEntriesFromMavenDependencies::createEntry);
} catch (IOException ex) {
ex.printStackTrace();
}
}
private static void createEntry(String line)
{
try
{
if (line.trim().isEmpty()) return;
String[] components = line.split(":", 10);
String group=components[0].trim();
String artifact=components[1];
String version=components[3];
String type=components[4].trim();
// System.out.println(Arrays.toString(components));
String filename=artifact+"-"+version+".jar";
if (type.equals("compile")|| type.equals("runtime"))
{
System.out.println( "<resource name=\"" +group+":"+artifact+ "\" version=\"" +version
+ "\">lib/" +filename+"</resource>");
}
}
catch (Exception e)
{
System.out.println(line);
e.printStackTrace();
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Kleine Ergรคnzung: 13. Build systems

