maven(项目管理工具)
概述
简单说:maven是一款软件项目管理工具,专门用来管理项目的
企业开发:团队开发完的项目 都要交给maven管理
maven如何去管理项目(作用)
1 maven会统一管理项目jar包
day11--druid
day11--配置文件(pom.xml)---maven--cangku--druid
pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。
2 maven为项目提供了大量的命令功能
提供了项目生命周期管理的命令:编译、测试、打包、部署、运行。
3 maven对工程分模块构建,提高开发效率(待续...)
maven的仓库
1 本地仓库
工程第一次从本地仓库没找到jar包会从远程中央仓库(互联网)去下载jar 包,将jar包存在本地仓库
第二次不需要从远程中央仓库去下载,先从本地仓库找,如果找不到才会去远程仓库找。
PS:本地仓库
课程中:我给你们准备好了
工作中:企业给你准备好了
2 远程中央仓库
就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。
中央仓库的地址:http://repo1.maven.org/maven2/
3 远程私服仓库(公司内部使用)
公司内部自己架设的一台私服,用来放本公司自主研发的jar包功能
自己公司内部下载使用
maven的坐标
为了能够准确的找到仓库中的jar包,maven需要对这些jar包做唯一标识
这些唯一标识就叫做坐标,方便我们在pom文件中快速找到仓库的jar包
Pom.xml 坐标的定义元素如下:
groupId:定义当前在Maven项目中的名称
artifactId:定义项目模块
version:定义当前项目的当前版本
例如:要引入junit的jar包,
只需要在pom.xml配置文件中定义这些坐标元素,就可以将仓库junit的jar包引入到自己的项目中
扩展:以后自己编写的项目,也会放在仓库中
要放在仓库中:也要给自己的项目定义一个坐标
maven的安装
将maven包解压即安装成功
目录:
bin maven的二进制命令
boot maven加载第三方jar包的支撑
conf maven的配置文件(用)
lib maven运行时候需要的jar包
注意事项:
1 需要在配置文件中告诉maven本地仓库的位置
settings.xml: 53行的位置
<localRepository>仓库在硬盘的地址</localRepository>
2 环境变量的配置:
1需要配置环境变量MAVEN_HOME
MAVEN_HOME=E:\JAVA_IDE\maven\apache-maven-3.3.9;
2将MAVEN_HOME添加到path中
%MAVEN_HOME%\bin;
测试:mvn -version
maven集成idea
1 配置maven的安装路径
2 配置maven配置文件路径
3 配置本地仓库的路径
D:\maven\apache-maven-3.3.9\conf
在settings.xml 文件中第53行位置修改设置成如下图所示 :
4 配置所有资源都优先从本地仓库查找,没有再去网络
maven
---runner
VM Options=-DarchetypeCatalog=internal
5 测试Maven安装成功
打开cmd本地控制台,输入mvn -version
maven构建项目
maven管理普通项目
maven管理javaweb项目并发布访问
IDEA指定本地Maven
maven管理javaweb项目并发布访问
maven统一命令
编译complie、测试test、打包package(.war包)
maven的依赖管理
插件(clear,jdk编译版本)
导入坐标依赖(servlet 网站坐标介绍)坐标查询:http://mvnrepository.com/
依赖范围
<build>
<!‐‐maven插件‐‐>
<plugins>
<!‐‐jdk编译插件‐‐>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven‐compiler‐plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf‐8</encoding>
</configuration>
</plugin>
</plugins>
</build>
导入junit坐标依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
进行单元测试
import org.junit.Test;
public class DemoTest {
@Test
public void test1(){
System.out.println("test running...");
}
}
compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖
例如:struts-core、spring-beans。打到war包或jar包
provided 编译、和测试有效,A在编译和测试时需要B
例如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)
不会打到war
runtime:测试、运行有效
例如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用
在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的
会打到war
test:只是测试有效,只在单元测试类中用
例如:junit
不会打到war
按照依赖强度,由强到弱来排序:(理解)
compile> provided> runtime> test