其用意有二:
- 存取Local的Repository減少HTTP Request,降低頻寬負荷。
- 針對駐點開發環境不能連上Internet情況。
第一步:下載Nexus,至http://nexus.sonatype.org/downloads/下載nexus-webapp-version-bundle.zip,目前最新版是1.3.6,也可以下載nexus-webapp-version.war自己佈到Tomcat或其它的Web Server。而我用的是Nexus預備的Jetty,把zip檔解壓縮後,切換到Nexus Home目錄下的nexus-webapp-1.3.6\bin\jsw\windows-x86-32,執行Nexus.bat就啟動了。
第二步:切換到%USERPROFILE%\.m2,編輯setting.xml,若沒有這檔案從Maven Home下的conf目錄把該檔複製過來。增加如下的內容:
<settings>
...
<mirrors>
<mirror>
<id>Nexus</id>
<name>Nexus Public Mirror</name>
<url>http://10.1.2.3:8081/nexus/content/groups/public</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
呼!內容看來不少,也沒全懂。除了上面紅字URL就是第一步啟動的Nexus Server的URL外,其它照抄。我測試時是Nexus Server和Local放在不同台。然後把Nexus Site的Repository的junit目錄全刪。我在Nexus Site建立個Struts2的starter(參考Maven初體驗),做了mvn clean install,有把JUnit 3.8.1給下載到Nexus Site的Repository。
接著在Local設好setting.xml,也是同樣把Local repository的junit目錄刪了。而pom.xml則除了有dependcy JUnit 3.8.1外,還有最新的JUnit 4.7。是故在Local Site執行mvn clean install結果是,到Nexus Site找到JUnit 3.81就下載到自己的repository,但找不到4.7就直接到Maven Central下載。而Nexus Site並沒有因為Local Site對JUnit 4.7的請求而也把4.7給下載下來。也許需要再改個設定也說不定。