1.maven怎样去寻找路径
1)根据groupId : formateAsDiretory()将groupid中的句号分隔符转化为路径分隔符,之后添加“/”
2)在前面的基础上添加artificaetId 和一个“/”
3)然后在此基础上添加版本信息和“/”
4)如果有classifier 添加 classifier
最后得到项目的实际路径
2.maven 查找库
首先查找本地仓库,如果不存在或者需要更新的话则去远程仓库查找,找到后下载到本地的仓库中。
3.配置远程仓库位置
<project>
...
<repositories>
<repository>
<id>jboss</id>
<name>JBoss Repository</name>
<url>http://repository.jboss.com/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<layout>default</layout>
</repositories>
...
</project>
可以使用多个<repository>声明多个仓库。id必须唯一,默认的中央仓库的id 为central
如果需要认证,则在setting.xml中添加 Servers
<settings>
<servers>
<server>
<id>jboss</id>
<username>user</username>
<password>psw</password>
</server>
</servers>
</settings>
这其中的id 必须为 pom中repositories的id一致。
3.部署到仓库:
(1)可以使用命令进行部署到本地仓库
(2)修改pom文件,添加distributionManagement元素
<project>
...
<destributionManagement>
<repository>
<id>proj-releases</id>
<name>Proj Release Repository</name>
<url>http://192.168.1.100/content/repositories/proj-releases</url>
</repository>
<snapshotRepository>
<id>proj-snapshots</id>
<name>Proj Snapshot Repository</name>
<url>http://192.168.1.100/content/repositories/proj-snapshots</url>
</snapshotRepository>
</destributionManagement>
...
</project>
往远程仓库部署构件的时候,往往需要认证。就是需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。
<settings>
...
<mirrors>
<mirror>
<id>maven.net.cn</id>
<name>one of the central mirror in chaina</name>
<url>http://maven.net.cn/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
...
</settings>
说明:mirrorOf的值为central,表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像。
定义一个私服,访问所有的外部仓库,以免在pom中添加多个外部仓库<settings>
...
<mirrors>
<mirror>
<id>internal-repository</id>
<name>Internal Repository Manager</name>
<url>http://192.168.1.100/maven2</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
...
</settings>
说明:mirrorOf的值为*,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会被转至http:
//192.168.1.100/mavnen2.