簡體   English   中英

構建所有Maven子模塊

[英]Build all maven sub modules

我有一個Maven Web項目,該項目具有構成層次結構的多個子模塊。 我的Web項目中指定了項目的依賴關系,該依賴關系鏈接了其所有子依賴關系,並使它們可用於該Web項目。 但是問題是,當構建Web項目之前,我需要從jar項目(層次結構中最低的)開始對每個子模塊運行mvn install ,我想要一些maven配置,當我構建該項目時將自動構建所有子模塊網絡項目。

例:

A(Web項目)->(子模塊)-> B-> C-> D-> E-> F

構建A時,應將所有的jar重建並安裝在我的計算機上,以反映子模塊中所做的更新更改,並且可用於Web項目A。

多模塊項目是由parent POM引用一個或多個子模塊定義的。 對於您的情況,我想說您需要為所有模塊創建一個並在頂層添加,但是讓我提供一個更通用的示例。

首先,您需要將父pom.xml稱為父POM,並且應如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.my.group.id</groupId>
  <artifactId>my-parent</artifactId>

  <!-- The parent project doesn’t create a JAR or a WAR like our previous projects;
       instead, it is simply a POM that refers to other Maven projects. -->
  <packaging>pom</packaging>
  <version>1.0</version>

  <!-- ================================================================= -->
  <!-- Put all your submodules here (for this example I add two) -->
  <modules>
    <!-- This is list of artifactId for all your sub-modules  -->
    <module>sub-module-some-lib</module>
    <module>sub-module-my-webapp</module>
  </modules>
  <!-- ================================================================= -->


  <!-- everything else -->
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <dependencies>
    <!-- dependencies, etc. -->
  </dependencies>
</project>

然后讓我們回到彼此依賴的具體模塊。 首先,我們的庫將是JAR:

子模塊,一些-LIB

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- ================================================================= -->
  <!-- Notice that we declare parent here -->
  <parent>
    <groupId>com.my.group.id</groupId>
    <artifactId>my-parent</artifactId>
    <version>1.0</version>
  </parent>
  <!-- ================================================================= -->

  <artifactId>sub-module-some-lib</artifactId>
  <packaging>jar</packaging>

  <dependencies>
    <!-- e.g. specific dependencies for this module -->
  </dependencies>
</project>

然后依賴於我們的lib的webapp(意味着lib應該首先編譯!):

子模塊-MY-web應用

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <!-- Notice that we declare parent here -->
  <parent>
    <groupId>com.my.group.id</groupId>
    <artifactId>my-parent</artifactId>
    <version>1.0</version>
  </parent>

  <artifactId>sub-module-my-webapp</artifactId>
  <packaging>war</packaging>

  <dependencies>
    <!-- some other dependencies --> 

    <!-- But our webapp depends on our sub-module-some-lib 
         so we need to add it as dependency ! -->
    <dependency>
      <groupId>com.my.group.id</groupId>
      <artifactId>sub-module-some-lib</artifactId>
      <version>1.0</version>
    </dependency>
  </dependencies>

    <!-- build, plugins, etc. -->
</project>

其目錄結構如下所示:

  my-parent               // parent dir 
    pom.xml
    sub-module-some-lib   // module dir
      src
      pom.xml
    sub-module-my-webapp  // module dir
      src
      pom.xml 

要使其全部工作,您只需要從父項目(在最頂層的pom.xml上)運行mvn clean install命令,Maven將首先構建JAR,然后將Webapp構建為WAR。

可以擴展此方法以創建具有更多模塊甚至更復雜的項目樹的項目結構(例如,A依賴於B,B依賴於C等)

希望這有道理, 這里還有一個指南 ,您可以在其中找到更多詳細信息以及完整的示例,但是可能需要您首先熟悉Maven基礎。

快樂黑客:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM