1、创建顶层的mvn工程的pom.xml
<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.0http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><name>Centrepoint</name><groupId>com.effectivemaven.centrepoint</groupId><artifactId>centrepoint</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><description>Centrepoint is a basic but useful application that sets up adashboard of project information from Maven, Archiva andContinuum.</description></project>2 假设我们要创建的工程包括3个模块 module-one,module-two,module-three
依次执行下面的语句mvn archetype:generate -DartifactId=module-one -DgroupId=com.maventest.parentmvn archetype:generate -DartifactId=module-two -DgroupId=com.maventest.parentmvn archetype:generate -DartifactId=module-three -DgroupId=com.maventest.parent3 执行完成之后 mvn eclipse:eclipse 导入工程就会得到3个工程
4 查看主pom.xml 可以看到已经变成
-----------------------------------------------------------------------------------------------------------
parent.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.adolfmcc.thirdpp</groupId> <artifactId>thirdpp-parent</artifactId> <packaging>pom</packaging> <name>ThirdPP :: Module :: Parent</name> <version>1.0.0</version> <organization> <name>Zendai</name> <url>http://www.zendai.com/</url> </organization> <modules> <module>adolfmcc-util</module> <module>thirdpp-client</module> <module>thirdpp-server</module> </modules><properties>
<!-- 主要依赖库的版本定义 --> <spring.version>3.1.1.RELEASE</spring.version> <hibernate.version>4.1.3.Final</hibernate.version> <ehcache.version>2.5.2</ehcache.version> <hibernate-validator.version>4.3.0.Final</hibernate-validator.version> <jackson.version>2.0.2</jackson.version> <spymemcached.version>2.8.1</spymemcached.version> <jolokia.version>1.0.3</jolokia.version> <guava.version>12.0</guava.version> <commons-lang3.version>3.1</commons-lang3.version> <commons-io.version>2.3</commons-io.version> <joda-time.version>2.1</joda-time.version> <dozer.version>5.3.2</dozer.version> <freemarker.version>2.3.19</freemarker.version> <poi.version>3.8</poi.version> <slf4j.version>1.6.4</slf4j.version> <jetty.version>7.6.3.v20120416</jetty.version> <h2.version>1.3.166</h2.version> <junit.version>4.10</junit.version> <mockito.version>1.9.0</mockito.version> <powermock.version>1.4.12</powermock.version> <selenium.version>2.21.0</selenium.version><!-- Plugin的属性定义 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jdk.version>1.6</jdk.version> </properties> <!-- 设定除中央仓库(repo1.maven.org/maven2/)外的其他仓库,按设定顺序进行查找. --> <repositories><repository>
<id>nexus</id> <name>Team Nexus Repository</name> <url>http://172.16.100.232:8082/content/groups/public</url> </repository><repository>
<id>offical</id> <name>Maven Official Repository</name> <url>http://repo1.maven.org/maven2</url> <snapshots> <enabled>false</enabled> </snapshots> </repository><repository>
<id>springside</id> <name>SpringSide Additional Repository</name> <url>http://springside.googlecode.com/svn/repository</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <name>Team Nexus Repository</name> <url>http://172.16.100.232:8082/content/groups/public</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> </pluginRepositories> <!-- 预定义依赖项的version,scope与exclusions,子项目中只需定义groupId 和 artifactId 即可 --> <dependencies> <!-- spring tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.9</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.9</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3.3.1</version> </dependency> <!-- SPRING end --><!-- PERSISTENCE begin -->
<!-- hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}</version> </dependency><dependency>
<groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>${hibernate.version}</version> </dependency>
<!-- spring orm -->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- oracle --> <dependency> <groupId>ojdbc</groupId> <artifactId>ojdbc</artifactId> <version>14</version> </dependency><!-- optional datasource pool -->
<dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>commons-pool</groupId> <artifactId>commons-pool</artifactId> <version>1.6</version> </dependency> <!-- PERSISTENCE end --><!-- WEB begin -->
<!-- spring mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency><!-- sitemesh -->
<dependency> <groupId>opensymphony</groupId> <artifactId>sitemesh</artifactId> <version>2.4.2</version> </dependency><!-- j2ee web spec -->
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- WEB end --><!-- CACHE begin -->
<!-- ehcache --> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>${ehcache.version}</version> </dependency> <!-- CACHE end --> <!-- LOGGING begin --> <!-- slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency><!-- slf4j-log4j绑定 -->
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency><!-- common-logging 實際調用 slf4j -->
<dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency><!-- log4j -->
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency><!-- log4jdbc -->
<dependency> <groupId>org.lazyluke</groupId> <artifactId>log4jdbc-remix</artifactId> <version>0.2.7</version> </dependency> <!-- LOGGING end --><!-- XML begin -->
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency><!-- JSON begin -->
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-jaxb-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-hibernate4</artifactId> <version>${jackson.version}</version> </dependency> <!-- JSON end --><!-- GENERAL UTILS begin -->
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons-lang3.version}</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>${commons-io.version}</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.8.3</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.6</version> </dependency><!-- google java library -->
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency><!-- joda -->
<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>${joda-time.version}</version> </dependency> <!-- GENERAL UTILS end --><!-- OTHER UTILS begin -->
<!-- pojo copy --> <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>${dozer.version}</version> </dependency><!-- excel -->
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency><!-- validator -->
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>${hibernate-validator.version}</version> </dependency><!-- httpclient -->
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.2-beta1</version> </dependency><!-- template engine -->
<dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency><!-- email -->
<dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.5</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency><!-- international component for Unicode -->
<dependency> <groupId>com.ibm.icu</groupId> <artifactId>icu4j</artifactId> <version>4.8.1.1</version> </dependency> <!-- OTHER UTILS end --><!-- TEST begin -->
<!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- mockito --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>${mockito.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>${powermock.version}</version> <scope>test</scope> <exclusions> <exclusion> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </exclusion> </exclusions> </dependency><!-- spring -->
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.dbunit</groupId> <artifactId>dbunit</artifactId> <version>2.4.8</version> <scope>test</scope> </dependency><dependency>
<groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>${h2.version}</version> <scope>test</scope> </dependency><dependency>
<groupId>com.icegreen</groupId> <artifactId>greenmail</artifactId> <version>1.3.1b</version> <scope>test</scope> </dependency> <!-- TEST end --> </dependencies><!-- 插件配置 -->
<build> <pluginManagement> <plugins> <!-- compiler插件, 设定JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.4</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <showWarnings>true</showWarnings> </configuration> </plugin><!-- resource插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> </plugin><!-- test插件, 仅测试名称为*Test的类,使用支持分组测试的surefire-junit47 driver -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.12</version> <configuration> <includes> <include>**/*Test.java</include> </includes> </configuration> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit47</artifactId> <version>2.12</version> </dependency> </dependencies> </plugin><!-- 增加更多的Source和Test Source目录插件 -->
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.7</version> </plugin><!-- cobertura 测试覆盖率统计插件 -->
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin><!-- war打包插件, 设定war包名称不带版本号 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration> <warName>${project.artifactId}</warName> </configuration> </plugin><!-- jar打包相关插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.4</version> <configuration> <archive> <manifest> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> </plugin><!-- clean插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-clean-plugin</artifactId> <version>2.4.1</version> </plugin><!-- install插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-install-plugin</artifactId> <version>2.3.1</version> </plugin><!-- eclipse插件,设定下载Source -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>false</downloadJavadocs> </configuration> </plugin><!-- jetty插件 -->
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>${jetty.version}</version> </plugin><!-- assembly插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> </plugin><!-- dependency相关插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.4</version> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>versions-maven-plugin</artifactId> <version>1.3.1</version> </plugin><!-- ant插件 -->
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> </plugin><!-- exec java 插件 -->
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> </plugin><!-- sonar插件 -->
<plugin> <groupId>org.codehaus.sonar</groupId> <artifactId>sonar-maven3-plugin</artifactId> <version>3.0</version> </plugin> </plugins> </pluginManagement> </build></project>
---------------------------------------------------------------------------------------------------------------
xxxutil.xml
<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> <parent> <groupId>com.adolfmcc.thirdpp</groupId> <artifactId>thirdpp-parent</artifactId> <version>1.0.0</version> </parent> <artifactId>adolfmcc-util</artifactId> <packaging>jar</packaging> <name>ThirdPP :: Module :: adolfmcc-util</name> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> </dependencies></project>
-------------------------------------------------------------------------------------------------------
xxxclient.xml
<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> <parent> <groupId>com.adolfmcc.thirdpp</groupId> <artifactId>thirdpp-parent</artifactId> <version>1.0.0</version> </parent> <artifactId>thirdpp-client</artifactId> <packaging>jar</packaging> <name>ThirdPP :: Module :: thirdpp-client</name> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <executions> <execution> <id>attach-sources</id> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <dependencies> </dependencies></project>
--------------------------------------------------------------------------------------------------
xxxxserver.xml
<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> <parent> <groupId>com.adolfmcc.thirdpp</groupId> <artifactId>thirdpp-parent</artifactId> <version>1.0.0</version> </parent> <artifactId>thirdpp-server</artifactId> <packaging>war</packaging> <name>ThirdPP :: Module :: thirdpp-server</name> <build> <plugins> <!-- 获取SVN当前版本号 --> <plugin> <groupId>com.google.code.maven-svn-revision-number-plugin</groupId> <artifactId>svn-revision-number-maven-plugin</artifactId> <version>1.12</version> <executions> <execution> <goals> <goal>revision</goal> </goals> </execution> </executions> <configuration> <entries> <entry> <prefix>prefix</prefix> </entry> </entries> </configuration> </plugin> <!-- 生成war包,并写SVN当前版本号 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration><warName>trunk-${project.artifactId}-${project.version}-${prefix.committedRevision}-${timestamp}</warName>
<archive> <index>true</index> <manifest> <addClasspath>true</addClasspath> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries> </manifest> <manifestEntries> <Implementation-Version>${project.artifactId}-${project.version}-${prefix.committedRevision}-${timestamp}</Implementation-Version> <Specification-Version>${project.artifactId}-${project.version}-${prefix.committedRevision}-${timestamp}</Specification-Version> <Build-Time>${timestamp}</Build-Time> </manifestEntries> </archive> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>com.adolfmcc.uc</groupId> <artifactId>client</artifactId> <version>${project.version}</version> </dependency> </dependencies></project>-------------------------------------------------------------------------------------------