讓maven項目使用nexus作為遠程倉庫有兩種方式,第一種是在項目的pom.xml中進行更改,讓單個項目使用nexus倉庫;另一種是通過修改maven的配置文件settings.xml進行更改,讓所有項目都使用nexus倉庫。
進入maven安裝目錄的conf文件夾打開,修改settings.xml文件。
1.服務器配置
- <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.鏡像
- <mirrors>
- <mirror>
- <id>nexus-releases</id>
- <mirrorOf>*</mirrorOf>
- <url>http://localhost:8081/nexus/content/groups/public</url>
- </mirror>
- <mirror>
- <id>nexus-snapshots</id>
- <mirrorOf>*</mirrorOf>
- <url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
- </mirror>
- </mirrors>
id,name:唯一的鏡像標識和用戶友好的鏡像名稱。id被用來區分mirror元素,並且當連接時候被用來獲得相應的證書。
mirrorOf:鏡像所包含的倉庫的Id。例如,指向Maven central倉庫的鏡像(http://repo1.maven.org/maven2/),設置這個元素為central。更多的高級映射例如repo1,repo2 或者*,!inhouse都是可以的。沒必要一定和mirror的id相匹配。在這里mirrorOf項當然應該使用*,以表明是所有倉庫都會被鏡像到指定的地址。
url:鏡像基本的URL,構建系統將使用這個URL來連接倉庫。這里應該添nexus倉庫的地址,地址可以在nexus倉庫頁面中找到。
3.配置
- <profiles>
- <profile>
- <id>nexus</id>
- <repositories>
- <repository>
- <id>nexus-releases</id>
- <url>http://nexus-releases</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- <repository>
- <id>nexus-snapshots</id>
- <url>http://nexus-snapshots</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>nexus-releases</id>
- <url>http://nexus-releases</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>nexus-snapshots</id>
- <url>http://nexus-snapshots</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
profile項代表maven的基本配置。按照maven的一貫尿性,很多xml的配置項都會有一個配置項的復數形式作為父節點,以保證該配置項可以配置多個。在profiles項中,當然也可以配置多個profile,不過在這里配一個就夠了。下面介紹profile項的各個子節點。
id:用來確定該profile的唯一標識。
repositories/repository:用以規定依賴包倉庫的相關信息。在下屬節點中,id就不用多說了;URL是指倉庫地址,這里使用偽造的地址,否則即使設置了mirror,maven也有可能會直接從中央倉庫下載包;releases和snapshots放在一塊說吧,這兩個節點下屬的enable節點用以規定對應的依賴包是否對當前策略有效,假如將snapshot的enable項設為disable,則不會下載snapshot包,這兩個節點還有updatePolicy,checksumPolicy和layout屬性,這里就不多介紹了,有興趣的查查文檔吧。
pluginRepositories/pluginRepository:用以規定插件倉庫的相關信息。其下屬節點與repository的相同,不多說了。
4.當前啟用配置
- <activeProfiles>
- <activeProfile>nexus</activeProfile>
- </activeProfiles>
用以規定當前啟用的配置,將對應profile的ID加入到這一項即可使profile生效。
5.完整配置
- <?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">
- <pluginGroups></pluginGroups>
- <proxies></proxies>
- <servers>
- <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>
- <mirrors>
- <mirror>
- <id>nexus-releases</id>
- <mirrorOf>*</mirrorOf>
- <url>http://localhost:8081/nexus/content/groups/public</url>
- </mirror>
- <mirror>
- <id>nexus-snapshots</id>
- <mirrorOf>*</mirrorOf>
- <url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
- </mirror>
- </mirrors>
- <profiles>
- <profile>
- <id>nexus</id>
- <repositories>
- <repository>
- <id>nexus-releases</id>
- <url>http://nexus-releases</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- <repository>
- <id>nexus-snapshots</id>
- <url>http://nexus-snapshots</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>nexus-releases</id>
- <url>http://nexus-releases</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>nexus-snapshots</id>
- <url>http://nexus-snapshots</url>
- <releases><enabled>true</enabled></releases>
- <snapshots><enabled>true</enabled></snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
- <activeProfiles>
- <activeProfile>nexus</activeProfile>
- </activeProfiles>
- </settings>