1,建maven工程,设置仓库路径
选择quickstart
设置包名工程名称
仓库路径默认为.m2,自定义如下,先找到maven 的conf 目录下的settings.xml 打开文件搜索localRepository 修改路径
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository ----------------默认.m2路径
-->
<localRepository>${user.home}/Documents/lxl/java/jar/Maven/repository</localRepository>
修改完会在preferences 中的local Repository显示最新路径,
选中maven工作右键 更新,将jar下载到本地仓库
1,依赖包的查询
所有的依赖都是通过坐标来进行存储(GAV --groupid artifactid version)
有一些网上仓库提供了坐标的查询
mvnrepository.com,www.sonatype.org/nexus
gav写入pom.xml 先查本地库,没有再向网络下载
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
也可以直接在pom.xml中搜索是否本地库有jar
pom.xml 选中dependencies -- add--弹框中输入你要的jar名称 如hibernate
修改maven的中央工厂,在maven-model-builer.jar里面
目录:org.apache/maven/model 文件:pom-xxx.xml 配置了一个central
在自己的应用外面也配置一个central,url指向另外一个仓库即可
https://nexus.sourcesense.com/nexus/contnet/repositories/public/
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central Repository</name>
<url>https://nexus.sourcesense.com/nexus/contnet/repositories/public/</url>
<!-- <url>https://repo.maven.apache.org/maven2</url>-->
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>
依赖 scope,依赖的传递性,A->C B->A ==>B->C
基于scope依赖范围,默认compile 编译范围,编译打包都会用
test 测试范围 编译打包不用,不会传递
provided 编译测试引用 发布不用 如servlet的jar 在tomcat 中带有这些 如果打包在带上会冲突
runtime 运行时依赖编译不依赖
import
传递引用的冲突问题
1,a->b1.0 c->b1.1 d->a/c 这时在d的pom中,哪个依赖先写就使用先写的版本 所以d->1.0
2, a->b1.0 c->b1.1 d->a/c f->d,c 如果路径长短不一致就选择最小路径的 所以f->b1.1
如果希望精确的控制依赖,可以使用依赖的排除功能
<dependency>
<groupId>org.konghao.user</groupId>
<artifactId>user-log</artifactId>
<version>0.0.1-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>