本文共 4660 字,大约阅读时间需要 15 分钟。
Maven:
1.工程需要引入各种jar包,手动引入会遇到版本不一致的问题,修改难度太大;
2.一个命令解决繁琐的打包工作;
3.自动下载仓库中没有的包,如果下一个项目仍需要,会直接使用,不需要再下载
传统项目:jar包在项目内
Maven项目:jar包不在项目内,只拿到jar所在仓库的地址,大大减少磁盘空间
依赖管理:maven工程对jar包的管理过程
从网上下载的maven3的zip解压后有这几个文件(idea自带maven3,可在idea目录下的plugin/maven中找到)
打开conf/settings.xml文件
本地仓库的默认地点是用户地址下的.m2/repository
用户地址就是C:/user/ASUS(自己的用户名)
全地址即为C:/user/ASUS(自己的用户名)/.m2/repository
maven工程最开始运行会自动在这个目录下创建文件夹,通过联网去网上的中央仓库下载你所需要的jar包
如果不想放在c盘的默认地址处,将你想放到地址加入localRepository标签中即可。
仓库有三类:
maven查找jar包的顺序自上而下:本地–》远程–》中央
传统工程目录结构
maven目录结构
命令 | 执行 |
---|---|
mvn clean | 将项目下的target(已编译好的项目)删除 |
mvn compile | 只编译main下的代码,出现target |
mvn test | 编译test下代码和main下代码,放入target |
mvn package | 打包项目,编译test、main下代码,放入target |
mvn install | 安装项目到本地仓库,打包项目,编译test、main下代码, |
默认生命周期:从左至右
清除编译信息 | 编译 | 测试 | 打包 | 安装 | 发布 |
---|---|---|---|---|---|
clean | compile | test | package | install | deploy |
项目自身信息
项目运行所依赖的jar包信息
项目运行环境信息,如:jdk,tomcat信息
比如一个依赖的写法
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1
<dependency>
表示一个依赖包<groupId>
公司组织的名称<artifactId>
项目名称<version>
版本号对settings进行配置,需要注意的是settings是指当前项目的设置;other/settings for new project是对之后新创建的maven项目进行设置;
建议对全局进行设置,也就是后者;
create from archtype 打上勾
建好后
项目结构
自行补齐结构
pom.xml4.0.0 org.example maven-study 1.0-SNAPSHOT war maven-study Maven Webapp http://www.example.com UTF-8 1.7 1.7 junit junit 4.11 test maven-study maven-clean-plugin 3.1.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.8.0 maven-surefire-plugin 2.22.1 maven-war-plugin 3.2.2 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2
项目结构
补个test的resourcespom.xml
4.0.0 org.example maven-study02 1.0-SNAPSHOT
jar包冲突
比如tomcat本身自带了servlet-api和jsp-api包
而项目中又在maven配置了servlet-api和jsp-api包,名字一样就会冲突
使用scope来解决
system的systemPath
org.hamcrest hamcrest-core 1.5 system ${basedir}/WebContent/WEB-INF/lib/hamcrest-core-1.3.jar
dependency中的type
{groupId,artifactId,type,classifier}
。在很多情况下,这些依赖关系将引用没有classifier的jar依赖。这允许我们将标识设置为{groupId,artifactId}
,因为type的默认值是jar,并且默认classifier为null。 type的值一般有jar、war、pom等,声明引入的依赖的类型dependency中的classifier
<classifier>jdk14</classifier>
表示这个导入的jar包是jdk14编译的,什么时候需要这种属性呢?比如这种带后缀的jar包:json-lib-2.24-jdk14.jar,如果不写classifier是找不到这个包的<classifier>javadoc</classifier>
表示导入的是javadoc<classifier>sources</classifier>
表示导入的是sources<classifier>dist</classifier>
表示导入的是dist,上面三个都有如有助,不吝啬,赞之,谢谢~
转载地址:http://blign.baihongyu.com/