Ubuntu下 Maven 私服(Nexus) 安裝配置

好了,新建一個 Maven 項目測試一下吧,看看jar包是否是從你指定的私服地址下載的。java

OK,重啓你的 Ubuntu 試試吧!數據庫

而後,在咱們要發佈的項目所在 POM 文件中<project>標籤下加入以下配置:apache

切記<server>標籤 id 要和<distributionManagement>標籤中的<repository>標籤 id 要一致。maven

mvn deploy 命令就發佈到倉庫了!!!測試

OK,伺服搭建、配置,以及本地 Maven 如何使用私服,基本介紹完畢。如有疑問或不對之處,歡迎聯繫我指正!this

  • 安裝環境url

    Ubuntu 14.04.3 LTS 64 位spa

  • Nexus 安裝.net

    首先下載 Nexus 的 Linux 安裝包,官方地址:http://www.sonatype.org/nexus/go/,若是不能打開或沒法下載,能夠經過個人網盤分享下載:http://pan.baidu.com/s/1sjmpxsp插件

    下載完成後,把你的 jdk 安裝包上傳到 Ubuntu 中 /usr/local/src 目錄下,Nexus 是依賴 java jdk 的,若是已經安裝好了 jdk,以下命令開始進行安裝。(jdk 怎麼安裝?戳我!

    • cd /usr/local/src
      tar –zvxf nexus-latest-bundle.tar.gz
      mv sonatype-work ../
      mv nexus-2.11.2-06 ../
      cd ../nexus-2.11.2-06/bin
      ./nexus start

      nexus 啓動失敗,錯誤信息以下:

    • If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.

      意思是說若是你想運行這個腳本,必須先設置環境變量RUN_AS_USER=root,那麼咱們來加入這個環境變量

    • vi /etc/profile
      # 末尾重起一行加入
      export RUN_AS_USER=root
      # 退出保存
      source /etc/profile # 讓環境變量當即生效

      從新執行./nexus start。正常啓動了,若是還報錯,注意閱讀異常信息,耐心 Google Baidu。

      咱們能夠經過網頁訪問 http://server_ip:8081/nexus,來查看服務是否安裝成功! 登錄的用戶名和密碼是:admin/amdin123




         
      •  
  • 配置 Maven 使用私服下載 jar 包

    一般咱們本地配置好 Maven 之後,Maven 默認從http://repo.maven.apache.org/maven2下載jar包,咱們若是須要指定 Maven 從本身的伺服下載 jar 包,須要修改 MAVEN_HOME/conf/settings.xml文件(MAVEN_HOME是你 Maven的安裝目錄),找到 <mirros>標籤,在其中加入以下內容:

    • <mirror>
        <id>myNexus</id>
        <mirrorOf>*</mirrorOf>
        <name>My Nexus Mirror</name>
        <url>http://192.168.0.147:8081/nexus/content/groups/public</url>
        <releases>  
          <enabled>true</enabled>
        </releases>  
        <snapshots>  
          <enabled>true</enabled>  
        </snapshots>
      </mirror>
  • mirrorOf
    * = everything
    external:* = everything not on the localhost and not file based.
    repo,repo1 = repo or repo1
    *,!repo1 = everything except repo1

  • 從私服下載 snapshots 版本的 jar 包

    進行了如上配置後,默認就從私服下載 jar 包了,可是沒法從私服下載到 snapshots 版本的 jar 包和插件。若想下載 snapshots版本須要進行以下配置,找到修改 MAVEN_HOME/conf/settings.xml文件中<profiles>標籤,在其中加入以下內容:

    • <!-- 經過上面的mirror配置,項目已經能從伺服下載jar包和插件,但不能下載snapshots版本的jar,經過如下配置開啓 -->
      <profile>
          <!-- 從指定伺服下載jar包,此處開啓了snapshots版本的jar包下載 -->
          <id>use-local-nexus</id>
          <repositories>
              <repository>
                  <id>nexus</id>
                  <name>local private nexus</name>
                  <url>http://192.168.0.147:8081/nexus/content/groups/public/</url>
                  <releases>  
                      <enabled>true</enabled>
                  </releases>  
                  <snapshots>  
                      <enabled>true</enabled>  
                  </snapshots>  
              </repository>
          </repositories>
          <!-- 指定插件也從伺服下載 -->
          <pluginRepositories>
              <pluginRepository>
                  <id>nexus</id>
                  <name>local private nexus</name>
                  <url>http://192.168.0.147:8081/nexus/content/groups/public/</url>
                  <releases>
                      <enabled>true</enabled>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
              </pluginRepository>
          </pluginRepositories>
      </profile>
  • Maven私服開機啓動設置

    • vi /usr/local/nexus-2.11.2-06/bin/nexus
      # 修改一下兩項
      NEXUS_HOME="/usr/local/nexus-2.11.2-06"
      RUN_AS_USER=root
      # 保存退出
    • vi /etc/rc.local
      # 在 exit0 以前加入下面一行
      /usr/local/nexus-2.11.2-06/bin/nexus start
  • 私服講解

    Maven 安裝完成之後,通常咱們會對其進行一些配置,使其更易於使用。

    登錄後點擊左側導航的 Repositories ,看到以下圖

    注意 Type 這一列,Maven 倉庫一共有 4 中類型:group,hosted,proxy,virtual。

    • hosted 本地倉庫,一般咱們會部署本身的構件到這一類型的倉庫。如圖,安裝好私服後,會默認有三個 hosted 類型的倉庫,名字分別是 3rd party,Releases,Snapshots。

      • 3rd party 是用來上傳一些公共庫中沒有的jar包,如 Oracle數據庫驅動,MySQL數據庫驅動。咱們將驅動上傳到 3rd party 這個倉庫之後,項目就能直接經過私服下載數據庫驅動了。

      • Releases 咱們將本身開發的jar包發佈到倉庫,若是jar包是 Releases 版本的,jar包會被髮布到這個倉庫

      • Snapshots,同 Releases 同樣,若是咱們的 jar 包是 Snapshots版本的,jar包會被髮布到這個倉庫

         

    • proxy 代理倉庫,安裝好私服後,會默認有一個名爲 Central 的倉庫,它是一個代理倉庫。也就是說,假如你請求私服下載 jar 包,可是私服中沒有此 jar 包,那麼私服會經過代理倉庫來下載你請求的 jar 包。你能夠配置多個代理倉庫,配置完代理倉庫後,記得將代理倉庫加入Public Repositories組。另外記得將代理倉庫的 Download Remote Indexes 選項設置爲 true 。這裏說幾個經常使用的代理倉庫地址:

      • https://repository.apache.org/snapshots/

      • http://repo1.maven.org/maven2/ (Central 庫的地址就是這個)

      • https://nexus.codehaus.org/snapshots/

      • http://maven.oschina.net/content/groups/public/ (開源中國的Maven倉庫)

      • http://repository.sonatype.org/content/groups/forge/

    • group,倉庫組。倉庫組中能夠加入多個hosted/proxy類型的倉庫。它至關於hosted/proxy類型的倉庫集合,因此咱們配置 Maven 從私服下載 jar 包時,通常把 Maven 私服地址指向這個倉庫組,而不指向具體某個 hosted/proxy類型的倉庫。

    • 上面說的上傳 jar 包到 hosted 類型倉庫,添加一個 proxy 代理倉庫,以及在group中加入多個 hosted/proxy類型的倉庫,你能夠參考這篇文章http://aijezdm915.iteye.com/blog/1335025


  • 發佈本身的 jar 包到私服

    首先,MAVEN_HOME/conf/settings.xml文件中<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>
    • <distributionManagement>
      	<repository>
      		<id>nexus-releases</id>
      		<name>Nexus Release Repository</name>
      		<url>http://192.168.0.147:8081/nexus/content/repositories/releases/</url>
      	</repository>
      	<snapshotRepository>
      		<id>nexus-snapshots</id>
      		<name>Nexus Snapshot Repository</name>
      		<url>http://192.168.0.147:8081/nexus/content/repositories/snapshots/</url>
      	</snapshotRepository>
      </distributionManagement>

其它須要注意的問題及推薦

  1. 儘可能不要配置mirrorOf爲*, 會致使pom文件中的repository不生效
  2. 私服的配置推薦用profile配置而不是mirror(畢竟mirror是鏡像,私服實際上是n個鏡像及本身的開發庫等的合集)
     
    <profile>
          <id>nexus</id>
          <repositories>
            <repository>
              <id>nexus</id>
              <url>http://192.168.163.xx:xx/nexus/content/groups/public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
          </repositories>
          <pluginRepositories>
            <pluginRepository>
              <id>nexus</id>
              <url>http://192.168.163.xx:xx/nexus/content/groups/public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile>
      </profiles>
      <activeProfiles>
        <activeProfile>nexus</activeProfile>
      </activeProfiles>
相關文章
相關標籤/搜索