首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

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

2013-10-15 
Eclipse / 命令行 创建多模块的Maven项目(父模块,子模块)? ? ? 我们都知道,我们常常将一个复杂的java应用

Eclipse / 命令行 创建多模块的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

<packaging>pom</packaging>

并删除其中的src目录。

?

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

在父模块的目录下,

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

创建一个maven(子)项目。

?

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

在父模块的目录下

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

?

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

<modules>  <module>validator-rest</module>  <module>validator-web</module></modules>

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

<parent>

? <artifactId>cms-validator</artifactId>

? <groupId>com.ebay.tools.cms.validator</groupId>

? <version>1.0-SNAPSHOT</version>

</parent>

?

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

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

?

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

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

<plugin>

??? <artifactId>maven-compiler-plugin</artifactId>

??? <configuration>

??????? <source>1.6</source>

??????? <target>1.6</target>

??????? <encoding>UTF-8</encoding>

??? </configuration>

</plugin>

?

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

<build>

??? <plugins>

??????? <plugin>

??????????? <groupId>org.apache.maven.plugins</groupId>

??????????? <artifactId>maven-eclipse-plugin</artifactId>

??????????? <configuration>

??????????????? <wtpmanifest>true</wtpmanifest>

??????????????? <wtpapplicationxml>true</wtpapplicationxml>

??????????????? <wtpversion>2.0</wtpversion>

??????????? </configuration>

??????? </plugin>

??? </plugins>

</build>

?

6. 生成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类库变量了。

?

?二、在Eclipse中创建多个maven项目模块

?在Eclipse中创建父模块及其子模块也非常简单,主要也是通过选择模块的路径来完成。

1. 创建父模块:ast

例如在eclipse中new 一个simple maven project,注意选择父模块的路径为:C:\Users\swang6\workspace\ast

在创建的steps中输入如下信息:

Group Id: ?com.ebay.tools

Artifact Id: ASTController

version: 1.0.0

?

Packaging: pom

Name: Tools:ASTController:ASTController

?

Description:eBox command application using the command pipeline framework.

?

2. 创建子模块:?ASTRestService

在eclipse new 一个simple maven project,注意选择该子模块的路径为:C:\Users\swang6\workspace\ast\ASTRestService,

在创建的steps中输入如下信息:

Group Id:com.ebay.tools.ast

Artifact Id:ASTRestService

version: 1.0.0

Packaging: jar

Name: Tools:ASTController:AST-REST

Description:Restful services for load balance controller.

?

Parent Project

? ? ? ? ? ?Group Id:com.ebay.tools

? ? ? ? ? ?Artifact Id:ASTController

? ? ? ? ? ?Version:1.0.0

?

3. 创建子模块:?ASTWeb

在eclipse new 一个maven-archetype-webapp类型的project,注意选择该子模块的路径为:C:\Users\swang6\workspace\ast\ASTWeb

在创建的steps中输入如下信息:

Group Id:com.ebay.tools.ast

Artifact Id:ASTWeb

version: 1.0.0

Packaging: war

Name: Tools:ASTController:AST-WEB

Description:The Load Balance Controller Web application for handling the requests

?

Parent Project

? ? ? Group Id:com.ebay.tools

? ? ? Artifact Id:ASTController

?? ? ?Version:1.0.0

?

完成以上操作后,如果在父模块(ast, ASTController)中的pom.xml中没有如下的配置,则加上:

<modules>

? ? <module>ASTWeb</module>

? ? <module>ASTRestService</module>

?

? </modules>

?

?如果在ASTRestService和ASTWeb中的pom.mxl中没有如下配置,则加上:

<parent>?

? ? <artifactId>ASTController</artifactId>

? ? <groupId>com.ebay.tools</groupId>

? ? <version>1.0.0</version>

? </parent>

?

这样就完成了在Eclipse中创建一个父模块ASTController,然后在其下创建另外两个子模块:ASTRestService和web模块:ASTWeb。

热点排行