1、仓库
maven编译时会按照配置中的构件坐标把依赖加到CLASSPATH
2、构件坐标与仓库路径,仓库根目录
groupid/artifactid/version/arifactid-version.packaging|extension--classfier
3、仓库分类
构建开始时,会先在本地仓库查找,不存在就去远程仓库下载到规则路径下,然后再加入类路径
即使本地仓库已经存在,会根据配置检查更新。
快照更新策略:会比较本地构建目录下元数据文件和远程仓库目录下元数据文件,来决定是否下载更新
release/latest(快照)
---本地仓库
---远程仓库/私有仓库
---中央仓库
---公共仓库 http://download.java.net/maven/2
http://repository.jboss.com/maven2/
---私有仓库
4、仓库路径设置
M2_HOME/conf/settings.xml--全局配置
~/.M2/settings.xml---个人私有设置
--<settings>
<localRepository>D:/xxxx</localRepository>
</settings>
5、构件入库的方法
---mvn clean install -Dmaven.test.skip=true
---从远程仓库加载安装
6、仓库超级POM在maven-module-builder.jar文件,所有maven项目会继承这个超级POM
<repositories>
<repository>
<id>central</id>
<name>maven switchboard</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</respository>
<repository>
<id>central</id>
<name>maven switchboard</name>
<url>http://repository.jboss.com/maven2/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>daily/never/always/5(分钟)</updatePolicy>
<checksumPolicy>ignore</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</respository>
</repositories>
7、远程仓库的认证
<settings>
<servers>
<server>
<id>central</id>---注意ID需要与repositories中定义的id匹配
<username>xx</username>
<password>xx</password>
</server>
</servers>
</settings>
8、发布到远程仓库--认证同上锁 mvn clean deploy
<distributionManagement>
<repository>
<id></id>
<name></name>
<url>xxx</url>
</repository>
</distributionManagement>
9、SNAPSHOT版本妙用--SNAPSHOT意味着不稳定
每次构建时,maven会根据仓库<repository>定义的策略,去服务器检查是否存在新的版本,
通过比较本地元数据文件和远程元数据文件的时间戳,如果有就下载更新。
SNAPSHOT版本在deploy时,maven会给版本打时间戳。
10、当依赖版本是release/latest/SNAPSHOT时,都会检查更新
release会检查最新的发布,会检查最新的快照或发布,SNAPSHOT最新的快照
11、插件的远程仓库
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>maven switchboard</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
<pluginRepositories>