Maven学习(2) - Maven构建多模块Java工程
概述
项目开发时,通常会将项目分为多个模块进行开发,本文讨论如何用Maven构建多模块的Java工程。
软件环境
Java:1.6.0_26
Maven:3.1.1
OS:WindowXP SP3
项目模块说明
示例工程分为多个模块,分别是:
- research_maven_javamm:父工程,聚合各模块。
- App:主模块,依赖ModuleA、ModuleB和ModuleCom
- ModuleA:模块A,依赖ModuleCom
- ModuleB:模块B,依赖ModuleCom
- ModuleCom:共通模块
多模块项目整体构建使用Maven的父子继承能力。
创建工程
首先创建工程和各模块,然后配置各模块之间的依赖关系。
项目的对第三方构件的依赖关系配置在父工程的pom.xml中,这样各模块可以省去第三方构件的依赖配置。
创建父工程
首先创建父工程应用
创建脚本
- mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=research_maven_javamm -DarchetypeArtifactId=maven-archetype-quickstart
修改父工程为Maven的父工程
创建成功后,需要将父工程类型改为Maven的父工程,修改pom.xml文件的packaging属性为pom,如下:
- <packaging>pom</packaging>
创建各模块工程
父工程创建成功后,创建各模块工程。
注意:创建各模块工程时,要先cd到父工程的根目录:
- cd research_maven_javamm
创建App主模块
- mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=app -DarchetypeArtifactId=maven-archetype-quickstart
创建ModuleA工程
- mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-a -DarchetypeArtifactId=maven-archetype-quickstart
创建ModuleB工程
- mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-b -DarchetypeArtifactId=maven-archetype-quickstart
创建ModuleC工程
- mvn archetype:create -DgroupId=com.github.hubin0011 -DartifactId=module-com -DarchetypeArtifactId=maven-archetype-quickstart
创建各模块后,可以看到父工程research_maven_javamm的pom.xml文件中添加了子工程的信息:
- <modules>
- <module>app</module>
- <module>module-a</module>
- <module>module-b</module>
- <module>module-com</module>
- </modules>
配置各模块依赖关系
创建各模块工程后,需要对各模块工程之间的依赖关系进行配置。如之前说明的模块依赖关系:
- ModuleA依赖ModuleCom
- ModuleB依赖ModuleCom
- 主模块app依赖ModuleA、ModuleB和ModuleCom
配置ModuleA依赖ModuleCom
修改ModuleA的pom.xml文件,添加ModuleCom的依赖:
- <dependency>
- <groupId>com.github.hubin0011</groupId>
- <artifactId>module-com</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
配置ModuleB依赖ModuleCom
修改ModuleB的pom.xml文件,添加ModuleCom的依赖:
- <dependency>
- <groupId>com.github.hubin0011</groupId>
- <artifactId>module-com</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
配置主模块app依赖ModuleA、ModuleB和ModuleCom
修改app的pom.xml文件,添加ModuleA、ModuleB和ModuleCom的依赖:
- <dependency>
- <groupId>com.github.hubin0011</groupId>
- <artifactId>module-a</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>com.github.hubin0011</groupId>
- <artifactId>module-b</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>com.github.hubin0011</groupId>
- <artifactId>module-com</artifactId>
- <version>1.0-SNAPSHOT</version>
- </dependency>
编译工程
编译模块工程
在模块工程的目录,执行如下脚本可以编译该模块工程:
- mvn clean compile
编译父工程
在父工程的目录,执行如下脚本则编译整个工程:
- mvn clean compile
执行单体测试
对模块工程进行单体测试
在模块工程的目录,执行如下脚本可以运行该模块工程的单体测试:
- mvn clean test
对整个工程进行单体测试
在父工程的目录,执行如下脚本则运行整个工程的单体测试:
- mvn clean test
打包
打包模块工程
在模块工程的目录,执行如下脚本可以打包该模块:
- mvn clean package
打包整个工程
在父工程的目录,执行如下脚本则打包所有模块,在各模块的target目录会生成相应的jar构件:
- mvn clean package
发布构件到本地仓库
发布模块工程到本地仓库
在模块工程的目录,执行如下脚本可以发布该模块工程到本地仓库:
- mvn clean install
发布整个工程
在父工程的目录,执行如下脚本则发布整个工程到本地仓库:
- mvn clean install
最佳实践
- 父工程不应该有代码,所有的代码都应该查分到子模块中开发
- 工程共通依赖的第三方构件应该在父工程的pom.xml中维护,各模块依赖的特殊构件可以在各模块的pom.xml中维护
示例工程下载
本文的示例工程可以从http://github.com/hubin0011/research/tree/master/maven/java_mm下载。
Maven学习(2) - Maven构建多模块Java工程的更多相关文章
- Maven学习- 使用Maven构建Web项目
从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...
- maven 学习---使用Maven创建Java项目
在本教程中,我们将向你展示如何使用 Maven 来创建一个 Java 项目,导入其到Eclipse IDE,并打包 Java 项目到一个 JAR 文件. 所需要的工具: Maven 3.3.3 Ecl ...
- Maven学习(1) - Maven入门
home index:http://maven.apache.org/ download:http://maven.apache.org/download.cgi install: http://ma ...
- Maven学习总结--maven入门(一)
一.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理.
- Maven学习 二 Maven环境搭建
第一步:下载Maven并解压 注意选择镜像地址,选择国内的会快点 解压目录 Maven目录分析 bin:含有mvn运行的脚本 boot:含有plexus-classworlds类加载器框架 conf: ...
- 【Maven学习】Maven打包生成普通jar包、可运行jar包、包含所有依赖的jar包
http://blog.csdn.net/u013177446/article/details/54134394 ******************************************* ...
- Maven学习(一)-----Maven安装配置总结
想要安装 Apache Maven 在Windows 系统上, 需要下载 Maven 的 zip 文件,并将其解压到你想安装的目录,并配置 Windows 环境变量. 所需工具 : JDK 1.8 M ...
- Maven学习——修改Maven的本地仓库路径
安装Maven后我们会在用户目录下发现.m2 文件夹.默认情况下,该文件夹下放置了Maven本地仓库.m2/repository.所有的Maven构件(artifact)都被存储到该仓库中,以方便重用 ...
- Maven学习(十七)-----Maven外部依赖
Maven外部依赖 正如大家所了解的那样,Maven确实使用 Maven 库的概念作依赖管理.但是,如果依赖是在远程存储库和中央存储库不提供那会怎么样? Maven 提供为使用外部依赖的概念,就是应用 ...
随机推荐
- burp
http://www.2cto.com/Article/201406/310929.html
- WPF--ComboBox数据绑定
WPF--ComboBox数据绑定 0-在ComboBox中显示图片: <ComboBox Height="33" HorizontalAlignment="Rig ...
- [Cookie] C#CookieHelper--C#操作Cookie的帮助类 (转载)
点击下载 CookieHelper.rar 下面是代码大家看一下 /// <summary> /// 类说明:CookieHelper /// 联系方式:361983679 /// 更新网 ...
- 微软未公开的 SP
一些用在SQL 2000的企业管理GUI中,并且不打算用于其他的流程.微软已预计将其中的一些存储过程从未来的SQL Server版本中删除(或已经删除了).虽然这些存储过程可能很有用并为你节省了很多时 ...
- 如何下载到最新的版本的Oracle Database
其实这不是一个很困难的事情,但是发现好多同学都不知道,其实只需直接访问Oracle的官网就可以找到,鉴于Oracle经常改到下载面也我这里直接粘贴下载地址 http://www.oracle.com/ ...
- 关于shell脚本编程的10个最佳实践
每一个在UNIX/Linux上工作的程序员可能都擅长shell脚本编程.但大家解决问题的方式却不尽相同,这要取决于对专业知识的掌握程度.使 用命令的种类.看待问题的方式等等.对于那些处在shell脚本 ...
- iOS UITableviewWrapperView 和 automaticallyAdjustsScrollViewInsets属性
关于在navigationController下面使用tableView在竖直方向会遇到frame的y值的困惑, 会遇到视图控制器的这个属性:automaticallyAdjustsScrollVie ...
- DBA 培训相应内容笔记
014-12-23 slow hang lock 三种常见性能问题 hang;整个数据库不响应,无法创建新连接. hanganalyze输出. dump文件是否有问题信息, 文件是否有其他信息 工具: ...
- ios专题 - 安全
iOS通过以下几种机制来保全整个系统的安全性: 一:系统结构 所有iOS设备中,系统与硬件都高度集成,从系统启动.系统更新.应用的安装.应用的运行时等多个方面来保全系统的安全,具体包括: 1:所有iO ...
- Jmeter软件测试3--发送二进制报文
一直用Jmeter测试post接口,但报文信息都是明文方式,今天测试兄弟求助二进制报文如何使用Jmeter测试,查看了项目源码,报文中不仅采用二进制,而且还用java.util.zip进行了压缩,从晚 ...