Maven详解(入门到精通)学习maven有这个就够了_精通maven_做技术我是认真的的博客-CSDN博客
⚫官网: Maven – Welcome to Apache Maven
⚫ 下载地址:Maven – Download Apache Maven
下载完直接解压,配置环境变量
MAVEN_HOME=D:\BottomSoftware\apache-maven-3.6.3
Path增加%MAVEN_HOME%\bin
cmd输入mvn测试
花里胡哨,就是资源所在的地址, org.apache.spark
中央仓库:Central Repository:
咋搜:https://mvnrepository.com/
%MAVEN_HOME%\conf修改setting.xml,找到这一段,加上阿里云
alimaven
central
aliyun-maven
http://maven.aliyun.com/nexus/content/repositories/central/
4.0.0
com.itheima
project-java项目名
1.0-SNAPSHOT
jar
junit
junit
4.12
// 这里是jar包的索引结构,按下图找
junit
junit
// 这里是版本
4.12
log4j
log4j
1.2.13
https://mvnrepository.com/search?q=log4j
问题:如果一个项目需要另一个项目的依赖项
在java01里配置
org.example
java02
1.0-SNAPSHOT
问题:同一个jar包,java01使用了1.2.12版本,导入的java02使用了1.2.13版本,怎么办
看层级
后面的覆盖前面的生效
相关,java02中是test,java01里就看不到了
对外隐藏,不让别人用,这样别的模块引用就看不见这个了
junit
junit
4.12
true // 可选依赖设置
在java01里配个exclusions,主动断开间接依赖
org.example
java02
1.0-SNAPSHOT
log4j
log4j
junit
junit
4.12
org.hamcrest
hamcrest-core
主程序范围有效(main文件夹范围内)
测试程序范围有效(test文件夹范围内) Me:[在test包里可以导,在main程序里导不进去]
是否参与打包(packagel指令范围内)
传递 结果
大整体
- clean:清理工作
- default:核心工作,例如编译,测试,打包,部署等
- site:产生报告,发布站点等
当做中间的一件事n,会从0做到n(开始test,会从validate-----------test都做了)
去这里找需要的插件和goal等用法、指定在哪生效:
https://maven.apache.org/plugins/maven-source-plugin/
java01加上
// 写在构建下
org.apache.maven.plugins
maven-source-plugin
3.2.0
// 执行设置
jar // 执行结果
test-jar
// 在哪个阶段执行生效
generate-test-resources
别的插件
多一个 maven-source-plugin
执行完test周期后,多了个jar,里面有源码
多个子工程中依赖同样的jar包,但是采用test范围;由于test范围没有传递性;所以,每一个工程都需要对test范围的jar包进行单独依赖;
而如果希望修改多个工程中所依赖test范围的jar包版本,那么,一个一个项目去修改太麻烦,这时可以应用继承解决。
继承的使用:
(1)定义一个父工程,父工程packaging必须是pom
项目的打包类型:pom、jar、war
packing默认是jar类型,
pom ---------> 父类型都为pom类型
jar ---------> 普通项目打jar包,一般普通项目设置jar
war ---------> web项目一般都是打war包,web项目的话设置war
(2)在父工程中定义依赖的jar包,属于test范围:
pom
junit
junit
4.0
test
(3)在各个子工程中对父工程进行继承:
com.mqf.maven
MavenParent
0.0.1-SNAPSHOT
../MavenParent/pom.xml
(4)在各个子工程中对父工程中的包进行依赖,但是,不需要配置版本号和范围(与父工程的版本号和范围一致)
junit
junit
(5)如果希望修改版本,只需要修改父工程中的依赖jar包版本就可以了,那么,各个子工程中的jar包版本就都变了
(6)一个子工程只能继承一个父工程.
1. 父项目加入让子项目依赖的jar包配置
子项目继承父项目(继承后自动使用父类往外暴露的jar包)
HelloFriend项目中的pom:
MakeFriend的pom:
MakeFriend继承了Parent就可以选择使用父工程的pom中暴露的jar包: