在eclipse或者myeclipse下構建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在判斷一個項目是否可以創建子模塊其實是取決於這個配置的。