我们都知道,我们常常将一个复杂的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目录。
cd cms-validator
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。
相关推荐
在IDE如IntelliJ IDEA或Eclipse中,选择“New > Maven Project”,然后不勾选“Create Artifact ID”和“Create module group ID”,只输入Group ID(通常是公司域名倒置,如com.example),Artifact ID(父项目名,...
在创建了父项目后,可以创建子模块项目。子模块项目是指在父项目下面的子项目,每个子模块项目都可以单独维护和构建。 可以按照以下步骤创建子模块项目: 1. 在父项目下创建一个新文件夹,命名为子模块项目的名称...
创建多模块项目的第一步是建立父项目。在`pom.xml`文件中,你需要定义`<groupId>`、`<artifactId>`和`<version>`,并添加`<modules>`标签来指定子模块。例如: ```xml ... <groupId>com.example</groupId> ...
对于每个子模块,也需要在Eclipse中单独创建Maven项目,然后将它们分别移动到"main-app"的子目录下。每个子模块有自己的`pom.xml`,用于定义其特有的依赖和构建配置。 4. **依赖管理** 在主项目的`pom.xml`中,...
7. **多模块项目支持**:对于包含多个子项目的多模块Maven项目,插件能够正确地管理各个模块之间的依赖关系。 8. **版本管理**:支持Maven的版本管理特性,如Snapshot版本的处理和更新检查。 9. **构建触发**:...
- 大型项目往往由多个子模块组成,Maven可以通过设置模块(modules)来管理这些子项目。 ### Maven的 profiles - profiles允许根据不同的环境(如开发、测试、生产)定义不同的配置。 - 可以通过命令行参数`-P`...
对于大型项目,Maven支持多模块组织,一个父POM管理多个子模块,子模块各自有自己的POM,通过`modules`元素列出。 十、Maven的命令行使用 Maven提供了丰富的命令行选项,如`mvn help:effective-pom`显示最终生效的...
对于多模块项目,只需在顶层父 POM 下执行 `mvn install`,Maven 将自底向上编译所有子模块,并将结果打包。这使得整个项目的构建过程变得简单且一致。 通过孔浩老师的 Maven 项目源码,你可以学习如何定义项目...
对于大型项目,可以使用Maven的聚合模块(aggregator)和子模块(module)结构来组织多个相关项目。在parent pom.xml中定义子模块,每个子模块有自己的pom.xml。 十、持续集成与Maven Maven与持续集成工具(如...
- **多模块项目支持**:方便管理包含多个子项目的大型项目,可以轻松地构建和调试整个项目结构。 **3. 安装与配置m2eclipse** 要在Eclipse中安装m2eclipse,可以通过Eclipse的“帮助”->“Eclipse Marketplace”...
在Maven中,一个项目可以被拆分成多个模块(submodules),每个模块都有自己的`pom.xml`,同时整个项目有一个顶层的父模块(parent POM)来统一管理所有子模块的配置。 **社区Web工程结构分析** 根据提供的文件...
对于大型项目,M2E提供了聚合项目(Aggregator Projects)的支持,可以管理多个子模块的构建和依赖关系。这样,一个父POM文件可以包含所有子模块的配置,简化了项目的整体管理。 不过,M2E也存在一些限制。例如,...
对于包含多个子模块的 Maven 多模块项目,M2E 可以正确地处理这些项目,使得在 Eclipse 中管理和构建大型项目变得简单。 6. **错误和警告提示**: M2E 会根据 Maven 的构建结果提供错误和警告提示,帮助开发者...
5. **多模块项目**:Maven支持多模块项目结构,一个父pom可以管理多个子模块,简化大型项目管理。 Eclipse Maven插件(M2Eclipse)则是将Maven的功能集成到Eclipse IDE中,提供以下特性: 1. **无缝集成**:在...
多模块项目通常结合聚合和继承使用,一个顶层父项目负责整体配置,各个模块作为子项目,继承父项目并添加各自特定的配置。 6、 其他高级特性 Maven 还支持插件管理、profile切换、生命周期绑定、构建过程的自定义、...
8. **多模块项目支持**:处理包含多个子项目的大型工程,统一管理所有模块的构建。 在压缩包文件名称列表中提到的“m2”可能是指Maven的本地仓库的别名,通常位于用户目录下的`.m2`文件夹。这个仓库存储了所有下载...
7. **多模块项目**:对于包含多个子项目的多模块Maven项目,m2e能够正确处理并展示项目结构。 8. **持续集成**:与Eclipse的其他插件集成,如Jenkins或Git,便于持续集成和版本控制。 ### 安装与使用 在Eclipse中...
6. **多模块项目**:对于包含多个子项目的大型项目,Maven插件可以有效地管理这些子项目之间的依赖,帮助开发者在Eclipse中轻松导航和构建整个项目结构。 安装Eclipse Maven插件通常是通过Eclipse Marketplace完成...
5. **聚合项目支持**:对于包含多个子模块的Maven聚合项目,M2E能正确地管理这些子模块,允许在Eclipse中同时编辑和构建。 6. **Eclipse集成**:与Eclipse的其他功能如JDT(Java Development Tools)和WTP(Web ...
创建多模块项目时,需要先创建项目目录结构,然后逐个生成子模块,并在顶层POM中声明子模块的关系。 总的来说,Maven通过统一的构建方式、依赖管理、插件机制,极大地提高了Java开发的效率和项目的可维护性。通过...