Maven项目构建
- 一、Maven的介绍
- 1.1 Maven的作用
- 1.2 Maven仓库
- 1.3 Maven目录及配置
- 二、Maven的使用
- 2.1 Maven 工程的目录结构
- 2.2 pom.xml配置文件
- 三、Maven多模块项目
- 3.1 创建多模块项目
- 3.2 父模块与子模块pom.xml
一、Maven的介绍
1.1 Maven的作用
- Maven 的依赖管理
- 项目的一键构建
构建:指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。
一键构建:指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
Maven 规范化构建流程如下:
对应的Maven指令分别为:
mvn clean => mvn comilp => mvn test => mvn package => mvn install
1.2 Maven仓库
- 本地仓库
用来存储从远程仓库或中央仓库下载的插件和 jar 包。项目使用一些插件或 jar 包,优先从本地仓库查找,默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示 windows 用户目录。
- 远程仓库
如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。远程仓库可以在互联网内也可以在局域网内。
- 中央仓库
在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。
1.3 Maven目录及配置
Maven目录:
其中,
目录 | 内容 |
---|---|
bin | 存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run |
boot | 存放了一些 maven 本身的引导程序,如类加载器等 |
conf | 存放了 maven 的一些配置文件,如 setting.xml 文件 |
lib | 存放了 maven 本身运行所需的一些 jar 包 |
在setting.xml中配置本地仓库和镜像:
<localRepository>D:\maven\repository</localRepository>
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
二、Maven的使用
2.1 Maven 工程的目录结构
- src/main/java —— 存放项目的.java 文件 src/main/resources —— 存放项目资源文件,如spring, hibernate 配置文件
- src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
- src/test/resources —— 测试资源文件 target —— 项目输出位置,编译后的 class 文件会输出到此目录
- pom.xml——maven 项目核心配置文件
2.2 pom.xml配置文件
- 定义坐标:
<!--项目名称,定义为组织名+项目名,类似包名--><groupId>com.bosssoft</groupId><!-- 模块名称 --><artifactId>hello_maven</artifactId><!-- 当前项目版本号,snapshot 为快照版本即非正式版本,release 为正式发布版本--><version>1.0-SNAPSHOT</version><!--打包类型jar:执行 package 会打成 jar 包war:执行 package 会打成 war 包pom :用于 maven 工程的继承,通常父工程设置为 pom--><packaging>war</packaging>
- 添加依赖
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies>
但是很多情况我们是不知道 jar 包的的坐标,可以通过网站http://mvnrepository.com/查询。
四种scope的依赖范围:
三、Maven多模块项目
3.1 创建多模块项目
先建父模块,然后在父模块上右键创建一个Module(模块)
其余子模块同上。
3.2 父模块与子模块pom.xml
- 父模块
<!-- 声明子模块 IDEA自动添加 --><modules><module>eruke</module><module>config</module><module>utils</module><module>pojo</module><module>controller</module><module>service</module><module>dao</module></modules>
<!--版本管理--><properties><junit.version>4.12</junit.version><spring.version>RELEASE</spring.version></properties>
<!--依赖管理--><dependencyManagement><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version><scope>test</scope></dependency></dependencies></dependencyManagement>
- 子模块
<dependencies><!--按需依赖,版本被父模块控制,可以自行声明,优先级更高--><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency></dependencies>
我们要达到的目的是:父模块作版本管理不实际依赖,子模块按需依赖。