2016-10-11 46 views
2

我有兩個不同的複雜構建任務,必須由maven按順序完成。例如創建戰爭文件,庫和...
據我所知,我必須將這些任務拆分成單獨的maven pom文件。通過這種方法,每個pom文件都有特定的責任,我可以儘可能簡單地保留它們,並且最重要的是,由於一些技術問題,我必須這樣做。
我把這兩個文件之間的共享依賴關係放在父pom文件中以減少重複。
在這種情況下,create-jar.xml和create-war.xml是任務,parent.xml包含共享依賴關係。
parent.xml使用幾個pom文件構建項目

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


創建-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> 


創建-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 ^我需要的帽子是通過一個命令調用mvn安裝這兩個pom文件。該命令對我來說非常重要,因爲create-jar必須在創建之前運行。
有兩種方法。
第一個繼承,通過使用create-jar.xml作爲create-war.xml的直接父項,因此通過運行create-war,調用create-jar。
另一個解決方案是組合通過從create-war.xml運行create-jar.xml。我不知道我該怎麼做。但是我認爲maven-invoker或maven-antRun插件可能會有所幫助。 我很樂意幫助我。

+2

我的理解是,您需要一個多模塊版本 – Jens

+0

請說明您的WAR是否應包含JAR。如果你的場景真的是「建立一個JAR,然後建立一個包含JAR的WAR」 - 你很可能不是這個場景的第一個。 –

+0

我會嘗試添加以下內容到製作,war.xml ' 主要 創建 ' –

回答

0

檢查這個sample project
基本上你會需要一個父母的pom,它會打電話給你的2個孩子poms。
上面的例子有點長,但他們會解釋外行的每一步。

相關問題