本文不設計pom.xml的項目配置引用 主要是記錄一下公共jar的管理配置apache
只須要修改一下maven setting配置maven
<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>e:\maven</localRepository> <!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository <localRepository>/path/to/local/repo</localRepository> -->
不須要配置中央倉庫 由於在 maven 解壓路徑lib中 E:\xxxx\lib\maven-model-builder-3.3.9.jar解壓打卡pom.xml 中已經默認配置好中央倉庫ui
<modelVersion>4.0.0</modelVersion> <repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
當存在Nexus 咱們本身的項目就要考慮首先訪問本身公司的Nexus (本地畢竟比遠程倉庫下載快),在項目中就要配置本地Nexus地址this
一種能夠在單個項目pom.xml中配置以下添加便可url
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <!-- 添加nexus repository --> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> </repository> </repositories> <dependencies>
第二種 在maven setting.xml配置文件中配置設計
<profiles> <profile> <id>nexus</id> <repositories> <repository> <id>Releases</id> <name>my-nexus-repository</name> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <profile> </profiles> <!-- 記得啓動--> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
每個profile 能夠配置一個倉庫地址(多個倉庫 做用本身查)code
當本地Nexus中沒有相應的jar存在會直接去遠程倉庫尋找,那麼當本地Nexus沒有下載過相應jar時 ,仍是要去遠程倉庫尋找 。server
那麼問題是在哪去尋找 (注意:**不是再去maven lib下 E:\xxxx\lib\maven-model-builder-3.3.9.jar 查 而xml
是在Nexus本身那幾個倉庫中配置的遠程倉庫去找** ) 在Nexus中有一個默認的central倉庫如圖:圖片
本文再也不介紹Nexus幾個倉庫的具體做用 (本身單獨去查一下就能夠)。
可是當咱們的Nexus關閉了呢 本身的項目仍是會去 經過maven lib下 E:\xxxx\lib\maven-model-builder- 3.3.9.jar 去查中央倉庫因此要設置 只能經過咱們的Nexus去訪問中央倉庫 ,當個人倉庫關了 就不能去訪問中央倉庫獲取jar包。(這樣也是爲了更靈活統一 畢竟jar包中的中央倉庫 是不可變得 Nexus訪問中央倉庫的地址是能夠配置的)
解決上面的問題須要配置鏡像(mirror)代碼以下
<mirrors> <mirror> <id>Releases</id> <!--*表明全部須要訪問的 倉庫都會鏡像到本地12.0.0.1 8081倉庫去尋找 也就是遠程中央倉庫 你只能經過個人本地倉庫去訪問 --> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> </mirror> <mirror> <id>Snapshots</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url> </mirror> </mirrors>
一樣能夠配置多個mirror ,mirrorOf表明哪些要訪問的倉庫地址(profiles 下的profile)須要鏡像必須走本身的 Nexus地址。 設置成星號表明全部。
這種狀況下在咱們本地的maven 配置的profile和maven lib下 E:\xxxx\lib\maven-model-builder-3.3.9.jar
pom.xml中的profile 地址都會轉到mirror
同時注意一下 在maven的 那個jar包中的配置 snapshots和enabled都是關閉的false
<repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> <releases> <updatePolicy>never</updatePolicy> </releases> </pluginRepository> </pluginRepositories>
雖然訪問全部的倉庫都是轉到mirror 可是他必須先去找到 下面的profile 地址和maven jar中的中央工廠地址纔回去轉到 mirror 中,注意:鏡像過去的只是地址 配置中的其餘配置仍是按照原來的模式去設置
因此在咱們要訪問中央倉庫時他根據上面設置的false去設置 咱們應該重寫jar包中的中央工廠的配置。
將releases和snapshots設置爲true
<profiles> <profile> <id>central</id> <repositories> <repository> <id>Releases</id> <name>my-nexus-repository</name> <url>http://mvnrepository.com/</url> <!-- 下面兩個true 表示能夠下載 releases和 snapshots包(具體也不清楚是什麼)--> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile> </profiles> 開啓是必須的 <activeProfiles> <activeProfile>central</activeProfile> </activeProfiles>
總結:最後說的好像有點亂,核心配置看setting.xml吧 一共三四段
第一段 本身本地jar存儲: <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>e:\maven</localRepository> 第二段Nexus用戶: <servers> <server> <id>siteServer</id> <privateKey>/path/to/private/key</privateKey> <passphrase>optional; leave empty if not used.</passphrase> </server> --> <server> <id>Releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>Snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> 第三段mirror鏡像配置: <mirror> <id>Releases</id> <!--*表明全部須要訪問的 倉庫都會鏡像到本地12.0.0.1 8081倉庫去尋找 也就是遠程中央倉庫 你只能經過個人本地倉庫去訪問 --> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://127.0.0.1:8081/nexus/content/groups/public/</url> </mirror> <mirror> <id>Snapshots</id> <mirrorOf>*</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url> </mirror> </mirrors>
第四段 須要訪問的倉庫:
<profiles> <profile> <id>**nexus**</id> <repositories> <repository> <id>Releases</id> <name>my-nexus-repository</name> <url>http://mvnrepository.com/</url> <!-- 下面兩個true 表示能夠下載 releases和 snapshots包(具體也不清楚是什麼)--> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>Snapshots</id> <name>my-nexus-repository</name> <url>http://mvnrepository.com/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>**nexus**</activeProfile> </activeProfiles>