Maven私服倉庫管理:Nexus 3.0


Nexusは強力な倉庫マネージャであり、内部倉庫のメンテナンスと外部倉庫へのアクセスを大幅に簡素化しています.
2016年4月6日にNexus 3.0バージョンがリリースされ、2.xバージョンは大きく変更されました.
  • は、低レベルのコードを大規模に再構築し、パフォーマンスを向上させ、拡張性を向上させ、ユーザー体験を改善しました.
  • はインタフェースをアップグレードし、ユーザーインタフェースの操作と管理を大幅に簡素化します.
  • は、新しいインストールパッケージを提供し、導入をより簡単にします.
  • Docker,NeGet,npm,Bowerへのサポートを追加します.
  • は、新しい管理インタフェースを提供し、自動タスクの管理を強化します.

  • インストール
  • ダウンロードアドレス:http://www.sonatype.com/downl...
  • 公式文書:http://books.sonatype.com/nex...
  • PDFドキュメント:http://books.sonatype.com/nex...

  • 環境要件
  • Windows/Linux/Mac
  • Java JDK 8+
  • Apache Maven 3.0+

  • インストール手順
    例Ubuntu 16.04 LTS環境に基づき、インストール前にJDKをチェックする.
    nexus@ubuntu:~$ java -version
    java version "1.8.0_91"
    Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

    1.管理ユーザーの作成
    この手順は必須ではありませんが、管理とメンテナンスを向上させるために、管理ユーザーを作成することをお勧めします.
    #   root        
    root@ubuntu:~# adduser nexus
    
    ##  nexus    sudo  
    
    # 1.  root    
    root@ubuntu:~# chmod u+w /etc/sudoers
    
    # 2.   /etc/sudoers, root   nexus    
    nexus   ALL=(ALL) ALL
    
    # 3.          
    root@ubuntu:~# chmod u-w /etc/sudoers

    2.インストールパッケージのダウンロード
    root@ubuntu:~# su nexus
    nexus@ubuntu:~$ wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.0.1-01-unix.tar.gz
    nexus@ubuntu:~$ ls
    nexus-3.0.1-01-unix.tar.gz

    3.解凍とインストール
    nexus@ubuntu:~$ tar -zxvf nexus-3.0.1-01-unix.tar.gz
    
    #       
    nexus@ubuntu:~$ ls nexus-3.0.1-01/
    bin  data  deploy  etc  lib  LICENSE.txt  NOTICE.txt  public  system
    
    # bin:              
    # data:       
    # etc:     
    # lib: Apache Karaf     
    # public:     
    # system:           
    
    #   JDK  (  )
    nexus@ubuntu:~$ vim nexus-3.0.1-01/bin/nexus
    INSTALL4J_JAVA_HOME_OVERRIDE="/usr/lib/jvm/java-8-oracle"
    
    #        (     root  )
    nexus@ubuntu:~/nexus-3.0.1-01$ vim bin/nexus.rc
    run_as_user="nexus"

    4.運転
    nexus@ubuntu:~$ ./nexus-3.0.1-01/bin/nexus start
    #      :{start|stop|run|run-redirect|status|restart|force-reload}

    5.インストールの検証
    ブラウザを開いて入力:http://127.0.0.1:8081
    コンフィギュレーション
    以下の構成はオプションです.詳細は公式ドキュメントを参照してください.
    1.JVM構成(オプション)
    Nexus 3.0のデフォルト設定:
    nexus@ubuntu:~$ cat nexus-3.0.1-01/bin/nexus.vmoptions
    
    -Xms1200M
    -Xmx1200M
    -XX:+UnlockDiagnosticVMOptions
    -XX:+UnsyncloadClass
    -Djava.net.preferIPv4Stack=true
    -Dkaraf.home=.
    -Dkaraf.base=.
    -Dkaraf.etc=etc
    -Djava.util.logging.config.file=etc/java.util.logging.properties
    -Dkaraf.data=data
    -Djava.io.tmpdir=data/tmp
    -Dkaraf.startLocalConsole=false

    JVM構成の変更:
  • システムの実際の状況に応じて
  • を構成してください.
  • 他のJVMパラメータもここに追加できます
  • -Xms1500M
    -Xmx2G

    2.ポート番号の設定(オプション、デフォルトのポート番号:8081を推奨)
    nexus@ubuntu:~$ vim nexus-3.0.1-01/etc/org.sonatype.nexus.cfg
    application-port=9081

    再起動後のアクセス:http://localhost:9081
    3.データストアディレクトリの構成(オプション)
    nexus@ubuntu:~$ vim nexus-3.0.1-01/bin/nexus.vmoptions
    
    #       
    -Dkaraf.data=data
    -Djava.io.tmpdir=data/tmp

    4.エージェントの構成(オプション)
    Apache httpd.
    ProxyRequests Off
    ProxyPreserveHost On
    
    
      ServerName www.example.com
      ServerAdmin [email protected]
      ProxyPass /nexus http://localhost:8081/
      ProxyPassReverse / http://localhost:8081/
      ErrorLog logs/nexus/error.log
      CustomLog logs/nexus/access.log common
    

    nginx.
    http {
      proxy_send_timeout 120;
      roxy_read_timeout 300;
      proxy_buffering off;
      keepalive_timeout 5 5;
      tcp_nodelay on;
    
      server {
        listen *:80;
        server_name www.example.com;
    
        # allow large uploads of files - refer to nginx documentation
        client_max_body_size 1G
    
        # optimize downloading files larger than 1G - refer to nginx doc before adjusting
        # proxy_max_temp_file_size 2G
    
        location /nexus {
           proxy_pass http://localhost:8081/nexus;
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_set_header X-Forwarded-For
           $proxy_add_x_forwarded_for;
        }
      }
    }

    5.SSLの構成(オプション)
    Apache httpd. Ensure Apache httpd is loading mod_ssl.
    Listen 443
    ProxyRequests Off
    ProxyPreserveHost On
    
    
      SSLEngine on
      SSLCertificateFile "example.pem"
      SSLCertificateKeyFile "example.key"
      ServerName repo.example.com
      ServerAdmin [email protected]
      ProxyPass / http://localhost:8081/
      ProxyPassReverse / http://localhost:8081/
      RequestHeader set X-Forwarded-Proto "https"
      ErrorLog logs/repo.example.com/nexus/error.log
      CustomLog logs/repo.example.com/nexus/access.log common
    

    nginx. Make sure nginx is compiled using the --with-http_ssl_module option.
    http {
      proxy_send_timeout 120;
      proxy_read_timeout 300;
      proxy_buffering off;
      keepalive_timeout 5 5;
      tcp_nodelay on;
      
      server {
        listen *:443;
        server_name repo.example.com;
    
        # allow large uploads of files - refer to nginx documentation
        client_max_body_size 1G
    
        # optimize downloading files larger than 1G - refer to nginx doc before adjusting
        #proxy_max_temp_file_size 2G
    
        ssl on
        ssl_certificate example.pem;
        ssl_certificate_key example.key;
    
        location / {
          proxy_pass http://localhost:8081/;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For ←-
    
          $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto "https";
        }
      }
    }

    倉庫紹介
    1.エージェントウェアハウス(Proxy Repository)
    名前の通りサードパーティの倉庫を代理しています.
  • maven-central
  • nuget.org-proxy

  • バージョンポリシー(Version Policy):
  • Release:正式バージョン
  • Snapshot:スナップショットバージョン
  • Mixed:ハイブリッドモード
  • レイアウトポリシー(Layout Policy):
  • Strict:厳格
  • Permissive:ゆとり
  • 2.宿主倉庫(Hosted Repository)
    ローカルにアップロードされたコンポーネントとリソースを格納するには、次のようにします.
  • maven-releases
  • maven-snapshots
  • nuget-hosted

  • 導入ポリシー(Deployment Policy):
  • Allow Redeploy:
  • の再配置を許可
  • Disable Redeploy:再配置禁止
  • Read-ONly:読み取り専用
  • 3.倉庫グループ(Repository Group)
    通常、複数のエージェント・ウェアハウスとホスト・ウェアハウスが含まれます.プロジェクトでは、ウェアハウス・グループを導入するだけで、エージェント・ウェアハウスとホスト・ウェアハウスのパッケージをダウンロードできます.たとえば、次のようになります.
  • maven-public
  • nuget-group

  • ユーザーインタフェースの操作と管理は比較的簡単です.公式ドキュメントを参照してください.
    Mavenとの統合
    1.Server構成認証情報
    Mavenでsettings.xmlにNexus認証情報を追加:
    
      nexus-releases
      admin
      admin123
    
    
    
      nexus-snapshots
      admin
      admin123
    
  • nexus-releases:Releaseバージョン
  • をパブリッシュするための
  • nexus-snapshots:Snapshotバージョン
  • をパブリッシュ
    ReleaseバージョンとSnapshotバージョンの区別:
    Release: 4.3.0
    Snapshot: 4.3.0-SNAPSHOT
  • プロジェクトPOM.xmlで設定したバージョン番号にSNAPSHOTタグが追加されたものはすべてSNAPSHOTバージョンとしてリリースされ、SNAPSHOTタグがないものはReleaseバージョンとしてリリースされます.
  • SNAPSHOTバージョンでは、4.3.0-SNAPSHOTがリリースされると4.3.0-SNAPSHOT-20160712.114532-1.jar
  • になるなど、自動的に時間が加算されます.
    2.自動配置コンポーネントの構成
    POMでxmlに次のコードを追加します.
      
        
        nexus-releases  
        Nexus Release Repository  
        http://127.0.0.1:8081/repository/maven-releases/  
        
        
        nexus-snapshots  
        Nexus Snapshot Repository  
        http://127.0.0.1:8081/repository/maven-snapshots/  
        
     

    注意事項:
  • ID名はsettingsとしなければならない.xmlでは、サーバs構成のID名が一致しています.
  • プロジェクトバージョン番号にSNAPSHOT IDがある場合は、Nexus Snapshots Repositoryにリリースされます.そうしないと、Nexus Release Repositoryにリリースされ、IDに基づいてライセンスアカウントに一致します.

  • 3.Nexus倉庫への配備
    mvn deploy

    4.サードパーティ製JARパッケージのアップロード
    Nexus 3.0はページアップロードをサポートしていません.mavenコマンドを使用できます.
    #     JAR :aliyun-sdk-oss-2.2.3.jar
    mvn deploy:deploy-file 
      -DgroupId=com.aliyun.oss 
      -DartifactId=aliyun-sdk-oss 
      -Dversion=2.2.3 
      -Dpackaging=jar 
      -Dfile=D:\aliyun-sdk-oss-2.2.3.jar 
      -Durl=http://127.0.0.1:8081/repository/maven-3rd/ 
      -DrepositoryId=nexus-releases

    注意事項:
  • サードパーティ製JARパッケージをアップロードする際に、個別のサードパーティ製JARパッケージ管理倉庫を作成し、管理とメンテナンスを容易にすることを推奨します.(maven-3rd)
  • -DrepositoryId=nexus-releasesはsettingsに対応する.xmlにおけるServer構成のID名.(承認)
  • 5.エージェント中央倉庫の使用
    
        
            nexus
            Nexus Repository
            http://127.0.0.1:8081/repository/maven-public/
            
                true
            
            
                true
            
        
    
    
        
            nexus
            Nexus Plugin Repository
            http://127.0.0.1:8081/repository/maven-public/
            
                true
            
            
                true
            
        
    

    注意事項:
  • 開発において厳格な管理要件があれば、SNAPSHOTとRELEASEを個別に構成することができる.
  • プラグイン依存時にプラグインウェアハウスが構成され、デフォルトではMavenセントラルウェアハウスが使用されます.