1. 程式人生 > >maven與nexus操作點滴

maven與nexus操作點滴

maven

1.      maven的安裝

下載maven,安裝即可

2.      maven的配置

settings.xml檔案,預設不變即可執行

3.      pom.xml檔案的配置

通過eclipse建立maven專案,自動生成的pom.xml檔案預設不變即可

4.      maven操作

a)       mvn clean 清空target

b)      mvn compile 編譯專案

c)      mvn package 打包專案

d)      mvn install 把打包後的包放到本地repository中

e)      mvn deploy 把打包後的包提交到私服(這裡用的是nexus)

f)       還有別的操作,不一一列舉了

g)      ps: a,b,c,d是本地操作,e是聯網操作

nexus

1.   nexus安裝

去官網下載nexus,帶jetty的版本,然後執行nexus start

2.   nexus的簡單配置

配置hosts檔案

登入後進入repositories看到如下內容

下方的Browse Index和Browse Storage是空的,要進行更新索引才能看到內容

3.   nexus本地索引

選擇central,點選下方的configuration,把Download Remote Indexes設定未true

儲存後update index,repair index。經過漫長的等待,可以把索引下載到私服(nexus-2.12.0-01-bundle/sonatype-work/nexus/indexer

),這種方式比較耗費時間,而且由於網路原因經常不成功,會讓人覺得自己操作有誤,然後就會拼命找問題出在哪裡,結果徒勞無功。

另一種儲存索引到nexus私服的方式是直接下載索引檔案,然後解壓到私服的相應位置

a)       進入maven中央工廠url(如:http://repo1.maven.org/maven2/),url後跟上./index/即可進入索引頁面。

b)      下載該頁面中的nexus-maven-repository-index.properties與nexus-maven-repository-index.gz檔案

c)      下載一個indexer-cli-5.1.1.jar,把jar與上面2個檔案放到同一個目錄下,執行java -jar indexer-cli-5.1.1.jar -unexus-maven-repository-index.gz -d indexer即可得到索引檔案,把索引檔案copy到nexus-2.12.0-01-bundle/sonatype-work/nexus/indexer的指定位置,重啟nexus即可獲得本地索引

4.   本地storage內容

a)       至此位置,nexus基本可以用了,但是私服本地storage(nexus-2.12.0-01-bundle/sonatype-work/nexus/storage/central)中還是空的

b)      通過下文的配置與操作即可填充本地storage

maven綜合nexus

1.   maven配置連線nexus

a)       settings.xml檔案中增加profile

<profiles>

    <profile>

      <id>nexusProfile</id>

      <repositories>

        <repository>

          <id>nexus</id>

          <name>Nexus Repository</name>

          <url>http:// http://myrepos.mvn.com/:8081/nexus/content/groups/public/</url>

          <releases>

            <enabled>true</enabled>

          </releases>

          <snapshots>

            <enabled>true</enabled> <!-- 預設時關閉的,需要手動開啟 -->

          </snapshots>

        </repository>

      </repositories>

</profile>

</profiles>

b)      啟用profile,在settings.xml檔案中增加

<!-- 啟用profile配置 -->

  <activeProfiles>

    <activeProfile>nexusProfile</activeProfile>

  </activeProfiles>

c)      此時執行mvn compile將會通過http://myrepos.mvn.com私服下載依賴包,但是私服的storage是空的,那麼會經過私服連結到預設中央庫下載依賴包,並且所有下載的依賴包會在私服的storage上儲存,此時檢視browse storage會發現有內容了,私服本地storage(nexus-2.12.0-01-bundle/sonatype-work/nexus/storage/central)中也有內容了

d)       

e)       

2.   maven配置映象

a)       工廠的映象,只要mirrorOf中的工廠要被訪問,就會自動來找映象,如果映象的url中無法訪問,就不會去別的地方找了

b)      settings.xml檔案中增加

<mirrors>

     <mirror>

      <id>nexusMirror</id>

      <mirrorOf>nexus,central</mirrorOf><!-- 哪些工廠要用映象,*表示所有工廠都是用這個映象,這是推薦做法 -->

      <name>Human Readable Name for this Mirror.</name>

      <url>http:// myrepos.mvn.com:8081/nexus/content/groups/public/</url>

    </mirror>

</mirrors>

c)      此時關閉私服,再執行mvn compile,工程就不會從預設工廠下載依賴包,會報錯

3.   maven配置釋出

a)       settings.xml檔案中增加

<servers>

    <server>

      <id>smi-release</id>

      <username>admin</username>

      <password>admin123</password>

    </server>

    <server>

      <id>smi-snapshot</id>

      <username>admin</username>

      <password>admin123</password>

    </server>

  </servers>

b)  上面配置中的id要與專案pom.xml中<distributionManagement>元素中的id一致

4.   pom.xml配置釋出

a)       pom.xml檔案中增加

<distributionManagement>

            <repository>

                  <id>smi-release</id>

                  <name>smi release first deploy</name>

                  <url>http:// http://myrepos.mvn.com/:8081/nexus/content/repositories/releases/</url>

            </repository>

            <snapshotRepository>

                  <id>smi-snapshot</id>

                  <name>smi snapshot first deploy</name>

                  <url>http:// http://myrepos.mvn.com/:8081/nexus/content/repositories/snapshots/</url>

            </snapshotRepository>

      </distributionManagement>

<id> smi-release </id>,<id> smi-snapshot </id>要與settings.xml中<server>屬性中的id一致,deploy時,會檢查pom.xml的該id,匹配到setting.xml中的id取得nexus私服的帳號密碼獲得提交許可權