命令行 创建多模块的Maven项目(父模块,子模块)

我们都知道,我们常常将一个复杂的java应用拆分成多个java子应用。由于maven的出现,这种拆分就更加容易了,因为我们通过maven可以创建多个关联模块的项目 (Multiple Module Projects) 。由一个总的模块,下面包含多个子模块 (子模块还可以包含子模块) 。

一、通过在Maven命令行创建。

  1. 创建父模块 (总的POM) - cms-validator

使用命令mvn archetype:create -DgroupId=com.ebay.tools.cms.validator -DartifactId=cms-validator

创建一个maven项目,然后修改该项目的pom.xml文件,将package类型改为pom

pom

并删除其中的src目录。

cd cms-validator

  1. 创建提供rest service的子模块: validator-rest

在父模块的目录下,

使用命令mvn archetype:create -DgroupId=com.ebay.tools.cms.validator.rest -DartifactId=validator-rest

创建一个maven (子) 项目。

  1. 创建一个web子模块: validator-web

在父模块的目录下,

mvn archetype:create -DgroupId=com.ebay.tools.cms.validator.web -DartifactId=validator-web -DarchetypeArtifactId=maven-archetype-webapp

完成以上3步以后,会在总的pom.xml中已经自动加入:

validator-rest

validator-web

在各个子模块中也自动的加入了:

cms-validator

com.ebay.tools.cms.validator

1.0-SNAPSHOT

由于默认情况下子模块继承了总POM的package(pom),这里需要修改子模块的pom的package类型。

validator-web模块覆盖为war, validator-rest模块修改为: jar。

  1. 对父模块的特别设置:

需要在上级模块中设置java编译的参数,现在eclipse一般都使用比较新的版本,默认jdk是1.6,而maven默认的Jdk版本很有可能还是1.4。 所以需要设置java编译参数。

maven-compiler-plugin

1.6

UTF-8

  1. 如果web子模块需要wtp的支持,则可以在web模块的pom中设置wtp的支持,需要设置elcipse插件:

org.apache.maven.plugins

maven-eclipse-plugin

true

true

2.0

  1. 生成eclipse项目:

在父模块的根目录下,执行命令:

mvn eclipse:eclipse

注: 在eclipse中导入如上的项目后,如果没有在eclipse中设置"M2_REPO”,导入的项目可能会报错,

可以在eclipse中设置M2_REPO, 配置步骤: window » preferences » Java » Build Path » Classpath Variables

新建一个 M2_REPO 的变量,变量值指向你系统的Maven2的数据仓库位置(例如我自己的路径为: C:\maven-repo\swang\ebox)。如果要在eclipse中使用m2eclipse,需要执行命令mvn eclipse:m2eclipse, 这样就不需要设置M2_REPO类库变量了。

http://josh-persistence.iteye.com/blog/1930785