Zum Hauptinhalt gehen

FSM Modul mit maven bauen wenn parent pom schon belegt?

Kommentare

5 Kommentare

  • Zendesk API User
    Author: hbarthel - 6/3/2020 13:00

    Vielleicht kann man das damit lösen: Maven – Introduction to the Dependency Mechanism

    Habe ich selber aber noch nicht ausprobiert.

    0
  • Zendesk API User
    Author: ana_oleski - 6/3/2020 14:12

    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?

    0
  • Zendesk API User
    Author: Nitros - 6/4/2020 8:02
    • 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.

    0
  • Zendesk API User
    Author: ana_oleski - 6/5/2020 10:41

    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();

      }

      }

    }

    0
  • Zendesk API User
    Author: hbarthel - 6/12/2020 10:43

    Kleine Ergänzung: 13. Build systems

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.