我们都知道,我们常常将一个复杂的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。
相关推荐
【IDEA下创建多模块maven项目1】的教程详细介绍了如何使用IntelliJ IDEA创建一个基于Maven的多模块Java项目。这个项目由一个主工程`multi-module-Project`构成,它包含了两个子模块:`web-app`和`web-service`。 1....
### Eclipse 创建多模块Maven项目的详细步骤 在软件开发领域,Maven作为一种自动化构建工具,因其强大的依赖管理和项目构建功能而被广泛采用。而在大型项目或微服务架构中,经常需要构建多模块项目来实现良好的代码...
首先,创建一个父项目,然后在父项目的pom.xml中添加子模块的定义,最后在父项目目录下为每个子模块生成对应的目录结构和基本的pom.xml。 4. 依赖管理: 在父pom.xml中,通过标签可以定义所有子模块共有的依赖及其...
在Maven中,多模块项目是由一个父模块(Parent Module)和若干子模块(Child Modules)组成。父模块主要负责定义公共的依赖版本和插件配置,而子模块则各自负责具体的功能实现。通过`<modules>`标签,父模块可以声明...
2. **配置模块**:在PSS根目录下,你需要为每个子模块创建相应的目录。常见的子模块包括core(核心模块)、model(模型模块)、persist(持久层模块)、web(表现层模块)等。 3. **生成模块项目**:通过Maven...
Maven多模块项目是指由一个父项目(或称为聚合项目)和若干个子项目组成的项目结构。这种结构便于代码组织,提高代码复用性,并能有效管理依赖关系。每个子项目都是独立的Maven项目,可以有自己的pom.xml配置文件,...
4. **创建子模块**:回到Eclipse的"Package Explorer"视图,右键点击父项目,选择"Maven" > "New" > "Module"。同样输入Group ID和Artifact ID(子模块名称),例如:module1和module2,保持Version与父项目一致。...
接下来,我们需要为每个子模块创建对应的目录结构,并在每个子模块的pom.xml中声明其依赖关系。例如,如果我们有两个模块,一个负责Web服务(module1),另一个负责数据访问(module2),配置可能如下: module1/...
在`parent`模块的`pom.xml`中,我们可以定义全局的Maven配置和版本管理,然后声明其子模块。其他模块的`pom.xml`将继承自`parent`,并根据自身需求添加特定的依赖和配置。 为了将Jetty集成到项目中,我们需要在`web...
在创建多模块项目时,我们通常会为每个模块创建一个独立的子目录,并在每个子目录下配置自己的pom.xml。在给定的例子中,项目包含三个模块:`trade-core`、`trade-client`和`trade-server`。 创建这些模块的步骤...
【maven】多子模块maven模板工程archetype创建过程 在软件开发中,Maven作为Java项目管理和构建工具,提供了强大的依赖管理功能。而Maven的Archetype插件则可以帮助开发者快速创建新项目的模板,尤其对于有多个子...
1. **Maven多模块项目结构**:一个典型的Maven多模块项目通常包括一个父模块(parent)和多个子模块(sub-modules)。父模块的`pom.xml`文件不包含任何代码,只负责设定共用的属性、版本号、依赖管理和构建插件。子...
创建多模块项目的第一步是设置一个父项目(Parent Project),这个父项目不包含任何源代码,主要用来定义公共的构建配置,如版本号、依赖管理等。在本例中,"simple-parent"可能就是父项目的名称,表示我们将以此为...
在多模块开发中,Maven项目通常采用父模块(parent)和子模块(child)的结构。例如,`app-parent`这个压缩包很可能就是一个父模块项目,包含了若干个子模块的配置信息。父模块主要用于定义共有的构建配置,如版本...
在多模块项目中,父项目可以管理所有子模块的公共依赖,避免重复声明和版本冲突。每个子模块的pom.xml只需声明其特有的依赖。 4. Maven生命周期与构建阶段: Maven有三个主要的生命周期:clean、default和site。...
创建多模块Maven项目的第一步是创建父级项目。父级项目主要负责聚合所有子模块,并在pom.xml中声明这些子模块。例如: ```xml <module>module1 <module>module2 <module>module3 ``` 每个子模块都有自己的pom...
2. **创建子模块**:然后,为每个功能或服务创建一个子模块,每个子模块有自己的`pom.xml`,继承自父项目,并定义自己的`artifactId`、`version`以及特有的依赖和插件。 3. **配置模块间依赖**:在子模块的`pom.xml`...
聚合允许一个父POM包含多个子模块,而继承则允许子POM从父POM中继承配置,减少重复。 在“maven 模块化项目demo”中,可能包含以下组件: 1. **父模块**(Parent Module):定义了整个项目的共通配置,如版本管理...
创建多模块Maven项目的第一步是定义一个父模块(Parent Module),这个父模块不包含任何代码,它的主要作用是定义共有的依赖管理和版本控制。在`pom.xml`文件中,我们需要设置`groupId`、`artifactId`和`version`,...
接着,为每个子模块创建单独的`pom.xml`文件,它们继承自父项目。在子模块的`pom.xml`中,只需要声明父项目的坐标即可: ```xml ... <groupId>com.example</groupId> <artifactId>test-parent <version>...