maven
1、Profiles参数切换
2、jar包不在每个项目重复
3、版本号统一
4、自动的将依赖的jar包导入进来
maven
1、生命周期
default用于部署项目:
validate:校验项目和一些必要信息是可用的
compile:编译项目源码
test:执行源码的单元测试模块
package:将项目打包,比如打包成jar文件
verify:对集成测试的结果进行检查,以确保满足质量标准
install:将软件包安装到本地仓库中
deploy:将软件包部署到远程仓库
clean用于清理项目,
site用于创建项目文档
2、安装maven
当前系统是否配置JAVA_HOME的环境变量
下载maven,解压maven放在一个非中文无空格的路径下
配置maven的相关环境变量
在环境变量增加M2_HOME,路径是maven解压后的根目录
在环境变量里的path中增加maven/bin的目录
验证:maven -v 查看maven版本
3、创建约定的目录结构
2、maven命令
mvn clean
mvn package
mvn test
mvn install
mvn deploy
3、Maven核心概念
Maven坐标:
groupId:组织或者组织的项目名称
artifactId:项目中的具体模块
version:项目版本
packaging:项目打包方式
classifier:用于区分从同一POM构建的具有不同内容的构件
Maven仓库:
本地仓库
私服(内网的Maven仓库)
中央仓库
Maven依赖:
<dependency>
scope范围:
compile:默认编译依赖范围。对于编译、测试、运行三种classpath都有效
test:测试依赖范围。只对测试classpath有效
provided:已提供依赖范围。编译、测试classpath有效,对于运行无效。
runtime:运行时提供
test:仅用于测试,且不可传递
system:类似于provided,但必须显示提供JAR
import:仅在 dependencyManagement下支持
依赖包冲突
传递依赖:
比如我项目中引入junit,在解析我的项目的时候,
不仅仅仅有junit,还有junit依赖的JAR包
包冲突策略:
最短路径优先
最先声明优先
移除依赖:
<exclusions><exclusion>
Maven聚合:
<modules>
Maven继承:
为了消除重复。可以把很多相同的配置提取出来
子模块通过parent标签配置,继承父模块属性
父模块通过dependencyManagement标签进行管理
package:
pom:聚合工程
war
jar
如果要打包,有两种方式:
第一种就是先手动挨个将 model、dao、service 安装到本地仓库
从聚合工程处打包,即从 web 的parent 处打包。
maven项目依赖案例
parent:
继承parent,统一版本和相同依赖
dao
service
web
聚合在打包时,方便打包
build
<build>
<!-- 项目的名字 -->
<finalName>WebMavenDemo</finalName>
<!-- 描述项目中资源的位置 -->
<resources>
<!-- 自定义资源1 -->
<resource>
<!-- 资源目录 -->
<directory>src/main/java</directory>
<!-- 包括哪些文件参与打包 -->
<includes>
<include>**/*.xml</include>
</includes>
<!-- 排除哪些文件不参与打包 -->
<excludes>
<exclude>**/*.txt</exclude>
<exclude>**/*.doc</exclude>
</excludes>
</resource>
</resources>
<!-- 设置构建时候的插件 -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- 源代码编译版本 -->
<source>1.8</source>
<!-- 目标平台编译版本 -->
<target>1.8</target>
</configuration>
</plugin>
<!-- 资源插件(资源的插件) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>compile</phase>
</execution>
</executions>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- war插件(将项目打成war包) -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- war包名字 -->
<warName>WebMavenDemo1</warName>
</configuration>
</plugin>
</plugins>
</build>