1. 程式人生 > >maven構建專案(多模組專案)

maven構建專案(多模組專案)

在eclipse下構建maven專案,該專案由多個子模組組成。

1.建立一個父專案

NEW -->project-->maven-->maven Project,點選下一步,進入new maven Project的Select project name and location介面


,什麼也不做,直接下一步到Select an Archetype介面。


在這個介面中選擇maven-Archetype-site-simple,然後選擇下一步,進入選擇Enter a group id for the artifact的介面


,在group id 和artifact id中輸入你的group和artifact名稱。我用的分別是A和B,選擇完成。這時會在eclipse中生成一個專案,專案名是B。

此時B的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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>A</groupId>
  <artifactId>B</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <distributionManagement>
    <site>
      <id>website</id>
      <url>scp://webhost.company.com/www/website</url>
    </site>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
</project>

2.建立子專案

2.1 將專案B中的src檔案刪除(可有可無,主要看個人需要)
2.2 選中專案B,點選右鍵,選擇NEW -->project-->maven-->maven Module,點選下一步,在出現的介面中輸入子模組的名稱C,點選下一步,出現Select an Archetype介面。這時選擇maven-Archetype-site-quickStart或者maven-Archetype-webapp(構建web層時使用),然後選擇完成,即生成子專案C。

這時B的pom檔案就變成了這樣(和上面的比只是多了個modules標籤):

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>A</groupId>
  <artifactId>B</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>pom</packaging>

  <distributionManagement>
    <site>
      <id>website</id>
      <url>scp://webhost.company.com/www/website</url>
    </site>
  </distributionManagement>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <modules>
  	<module>C</module>
  </modules>
</project>

這時構建B的子專案完成,構建其他的子專案和此類似。

在構建第二個子專案D時可能在B中沒有及時出現,這時只要把B專案重新整理下就可以了。

ps:

其實在構建多模組的專案時,在選擇父專案的型別時是可以選擇任意的型別。選擇專案型別的介面如下:

對於這些非常規型別的專案,如果想要成為父專案,需要做如下一些改動:

1.將pom.xml檔案中的<packaging>jar</packaging>改為<packaging>pom</packaging>,若不換為pom則在打包的時候父專案會產生一個target檔案;如果沒有<packaging>pom</packaging>的可以在<version>0.0.1-SNAPSHOT</version>後面新增上這句話即可。

2.刪除除pom.xml外的所有檔案,其中JRE System Library是不能直接刪除的,需要選擇中,並單擊右鍵Bulid Path-->Remove from bilud path即可移除。

這時的父專案就顯得很乾淨整潔了。

其實在普通的專案上是不允許構建子模組的,能否在一個專案下建立子模組,主要取決於是否有<packaging>pom</packaging>這個配置。如果有這個配置則任何專案都可以建立子模組,硬要這樣建立的話整個專案會變的不倫不類。看來maven在判斷一個專案是否可以建立子模組其實是取決於這個配置的。