2016-10-11 3 views
2

Ich habe zwei verschiedene komplexe Build-Aufgabe, die nacheinander von Maven getan werden müssen. Zum Beispiel Erstellen von Kriegsdateien, Bibliothek und ...
Soweit ich weiß, muss ich diese Aufgaben in separate Maven Pom-Dateien aufteilen. Bei diesem Ansatz hat jede Pom-Datei eine spezifische Verantwortung, ich kann sie so einfach wie möglich halten und vor allem aufgrund einiger technischer Probleme muss ich dies tun.
Ich legte gemeinsame Abhängigkeiten zwischen diesen beiden Dateien in einer übergeordneten Pom-Datei, um die Duplizierung zu reduzieren.
In diesem Fall sind create-jar.xml und create-war.xml Tasks und parent.xml enthält gemeinsame Abhängigkeiten.
parent.xmlVerwenden mehrerer Pom-Dateien zum Erstellen eines Projekts

<?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://maven.apache.org/POM/4.0.0" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 

     <groupId>main</groupId> 
     <artifactId>main</artifactId> 
     <version>1.0</version> 
     <packaging>pom</packaging> 

     <dependencies> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>1.7.13</version> 
      </dependency> 
     </dependencies> 

    </project> 


create-jar.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <artifactId>main</artifactId> 
     <groupId>main</groupId> 
     <version>1.0</version> 
     <relativePath>parent.xml</relativePath> 
    </parent> 
    <groupId>create</groupId> 
    <artifactId>create</artifactId> 
    <version>1.2-SNAPSHOT</version> 
    <packaging>jar</packaging> 
</project> 


create-war.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <artifactId>main</artifactId> 
     <groupId>main</groupId> 
     <version>1.0</version> 
     <relativePath>parent.xml</relativePath> 
    </parent> 
    <groupId>create-war</groupId> 
    <artifactId>create-war</artifactId> 
    <version>1.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>3.0.0</version> 
       <configuration> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

W Hut ich brauche ist mvn installieren von beiden Pom-Dateien von einem Befehl. Der Orden ist sehr wichtig für mich, da create-jar vor create-warn laufen muss.
Es gibt zwei Ansätze.
Zuerst Vererbung, Mit create-jar.xml als direktes übergeordnetes Element von create-war.xml, daher create-war, wird create-jar aufgerufen.
Die andere Lösung ist Zusammensetzung durch Ausführen create-jar.xml von create-war.xml. Ich bin mir nicht sicher, wie ich das machen kann. Aber ich denke Maven-Invoker oder Maven-AntRun-Plugins können hilfreich sein. Ich würde mich freuen, mir eine Hand zu geben.

+2

Was ich verstehe, ist, dass Sie ein Multi-Modul bauen müssen – Jens

+0

Bitte klären Sie, ob Ihr WAR das JAR enthalten soll. Wenn Ihr Szenario wirklich lautet: "Erstellen Sie ein JAR, dann erstellen Sie ein WAR, das das JAR enthält" - Sie sind höchstwahrscheinlich nicht der Erste in diesem Szenario. –

+0

Ich würde versuchen, diese zu Ihrem create-war.xml ' Haupt erstellen ' –

Antwort

0

Überprüfen Sie diese sample project.
Grundsätzlich benötigen Sie ein Elternteil Pom, die Ihre 2 Kind Poms anrufen wird.
Das obige Beispiel ist ein bisschen lang, aber sie werden jeden einzelnen Schritt in der Laienzeit erklären.

Verwandte Themen