[全面讲解maven的setting.xml的配置nexus信息]
转载--(https://www.cnblogs.com/ptcnblog/p/13596576.html)
让maven项目使用nexus作为远程仓库有两种方式,
第一种是在项目的pom.xml中进行更改,让单个项目使用nexus仓库;
另一种是通过修改maven的配置文件settings.xml进行更改,让所有项目都使用nexus仓库。
1.Maven将本地项目发布到Nexus私服
需要再setting文件中配置服务器信息
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
|
id:这是Server的ID(不是登录进来的user),与Maven想要连接上的repository/mirror中的id元素相匹配。
username,password:这两个元素成对出现,表示连接这个server需要验证username和password。在nexus中,默认管理员用户名为admin,密码为admin123。
这里使用两个服务器配置,分别对应release和snapshot。
2.在pom.xml中配置
``
<distributionManagement>
``
<repository>
``
<id>releases</id>
``
<name>RELEASES PUBLISH</name>
``
<url>http:``//xx.xx.xx.xx:xxxx/repository/maven-releases/</url>
</repository>
``
<snapshotRepository>
``
<id>snapshots</id>
``
<name>SNAPSHOTS PUBLISH</name>
``
<url>http:``//xx.xx.xx.xx:xxxx/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
|
3.执行mvn 命令
mvn clean deploy
注意: 项目名称中带有shapshot的会发到快照库,否则则会部署到发行库
2.从nexus拉取依赖
需要再setting文件配置
<profile>
<id>nexusProfile</id>
<repositories>
<repository>
<id>xx</id>
<name>``111``</name>
<url>http:``//localhost:8081/nexus/content/groups/public/</url>
<snapshots>
<enabled>``true``</enabled>
</snapshots>
<releases>
<enabled>``true``</enabled>
</releases>
<layout>``default``</layout>
</repository>
</repositories>
</profile>
<activeProfiles>
``
<activeProfile>nexusProfile</activeProfile>
</activeProfiles>
|
注:激活来才会生效
整体的setting配置,可供参考
<?xml version=``"1.0"
encoding=``"UTF-8"``?>
<settings xmlns=``"http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi=``"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=``"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"``>
``
<localRepository>d:/.m2/repository</localRepository>
``
<interactiveMode>``true``</interactiveMode>
``
<usePluginRegistry>``false``</usePluginRegistry>
``
<offline>``false``</offline>
``
<pluginGroups>
``
<pluginGroup>com.micmiu.plugins</pluginGroup>
</pluginGroups>
<proxies>
``
<proxy>
``
<id>micmiuProxy</id>
``
<active>``true``</active>
``
<protocol>http</protocol>
``
<username>micmiu</username>
``
<password>mypwd</password>
``
<host>micmiu.com</host>
``
<port>``80``</port>
``
<nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
</proxy>
</proxies>
``
<servers>
``
<server>
``
<id>micmiu-releases</id>
``
<username>michael</username>
``
<password>mypwd</password>
</server>
``
<server>
<id>micmiu-snapshots</id>
``
<privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
``
<passphrase>mypwd</passphrase>
``
<directoryPermissions>``775``</directoryPermissions>
``
<filePermissions>``664``</filePermissions>
</server>
</servers>
``
<mirrors>
<mirror>
``
<id>mirrorId</id>
``
<mirrorOf>central</mirrorOf>
<name>micmiu ``for
dev.</name>
<url>http:``//dev.micmiu.com/repo/maven2</url>
</mirror>
</mirrors>
<profiles>
<profile>
``
<id>jdk-``1.4``</id>
<activation>
``
<activeByDefault>``false``</activeByDefault>
``
<jdk>``1.4``</jdk>
``
<os>
``
<name>windows ``7``</name>
``
<family>windows</family>
``
<arch>x86</arch>
``
<version>``6.1``</version>
</os>
<property>
``
<name>mavenVersion</name>
``
<value>``3.0``.``4``</value>
</property>
``
<file>
``
<exists>/usr/local/micmiu/workspace/myfile</exists>
``
<missing>/usr/local/micmiu/workspace/myfile</missing>
</file>
</activation>
<properties>
<user.blog>www.micmiu.com</user.blog>
</properties>
</profile>
``
<profile>
``
<id>env-dev</id>
<activation>
<property>
``
<name>target-env</name>
``
<value>dev</value>
</property>
</activation>
``
<properties>
<tomcatPath>/path/to/tomcat/instance</tomcatPath>
</properties>
</profile>
<profile>
<id>repo-dev</id>
``
<repositories>
``
<repository>
``
<id>nexus</id>
``
<name>nexus ``for
develop</name>
``
<url>http:``//192.168.1.8:8080/nexus/content/groups/public/</url>
<layout>``default``</layout>
<releases>
``
<enabled>``true``</enabled>
``
<updatePolicy>daily</updatePolicy>
``
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
``
<enabled>``true``</enabled>
``
<updatePolicy>daily</updatePolicy>
``
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local nexus</name>
<url>http:``//192.168.1.8:8080/nexus/content/groups/public</url>
<layout>``default``</layout>
<releases>
<enabled>``true``</enabled>
</releases>
<snapshots>
<enabled>``true``</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
``
<activeProfiles>
<activeProfile>repo-dev</activeProfile>
</activeProfiles>
</settings>
|
(1)各个节点的注释都有,可以看一下
(2)在配置了mirrorof的镜像后,并且mirrorof的规则是*的话,后面的profiles的repositories节点是没有意义的,可以去掉,但是profile节点还可以配置其他很多东西,所以不影响此节点下其他的除了repositories之外ide节点的东西
(3)maven的镜像从指定mirrorof的地址下载资源后,如果此地址没有该资源,不会去maven的超级pom下的中央仓库去下载资源,此时的nexus私服配置的有中央仓库地址,此时nexus私服会去中央仓库下,如果还没有,则要另外从网上下载,并上传到私服下