====== Apache Archivaで自前のMavenリポジトリを作る ====== {{tag>java maven centos7}} [[https://archiva.apache.org/|Apache Archiva]]は、[[https://maven.apache.org/|Apache Maven]]のリポジトリマネージャ。 リポジトリマネージャを使用すると、[[https://repo1.maven.org/maven2/|Central]]のようなMavenリポジトリを自前で用意できる。 競合製品には、[[https://www.sonatype.com/nexus-repository-oss|Nexus Repository Manager OSS]]や[[https://jfrog.com/open-source/#artifactory|JFrog Artifactory]]がある。 ===== CentOS 7へArchiva 2.2.4をインストール ===== CentOS 7.7のminimal-installへのインストール。ホストのIPアドレスは``192.168.0.11``とする。 ArchivaはLinuxのほかにWindowsやSolarisにも対応している。 また、インストールしたディレクトリと別のディレクトリから実行したり、リポジトリのバックエンドにCassandraを使用したりもできる。 warファイルもあるのでサーブレットとして配備も出来る。 ==== Javaのインストール ==== Java 1.8をインストールする。 Java 11をインストールすると、Archivaの起動に失敗する。 yum -y install java-1.8.0-openjdk-headless ==== Archivaをダウンロードして展開する ==== [[https://archiva.apache.org/download.cgi]]からダウンロード。 cd /opt curl -O http://ftp.kddilabs.jp/infosystems/apache/archiva/2.2.4/binaries/apache-archiva-2.2.4-bin.tar.gz tar xzf apache-archiva-2.2.4-bin.tar.gz rm apache-archiva-2.2.4-bin.tar.gz ===== Quick Startで試してみる ===== * [[https://archiva.apache.org/docs/2.2.4/quick-start.html|Quick Start]] ==== バックグラウンドで起動 ==== cd /opt/apache-archiva-2.2.4 bin/archiva start 停止は''bin/archiva stop''。 ==== ファイアウォールの例外に8080番ポートを追加 ==== firewall-cmd --add-port 8080/tcp firewall-cmd --runtime-to-permanent ==== Archivaにアクセスして、管理者のアカウントを作成する ==== - ''http://192.168.0.11:8080/''にアクセス - ''Create Admin User''をクリック - パスワードとメールアドレスを設定する ==== この時点で出来ること ==== * [[https://repo1.maven.org/maven2/|Maven Central]]のミラー * RELEASE用のリポジトリへのアクセス * SNAPSHOT用のリポジトリへのアクセス * 管理者(admin)ユーザはリポジトリの更新と参照が可能 * ゲスト(guest)ユーザはリポジトリの参照が可能 ==== デフォルトで用意されているリポジトリ ==== === RELEASE用リポジトリ === * ''http://192.168.0.11:8080/repository/internal'' * バージョンに''-SNAPSHOT''がついていないプロジェクトの成果物の配備先 * Maven Centralからミラーしたファイルの保管 === SNAPSHOT用のリポジトリ === * ''http://192.168.0.11:8080/repository/snapshots'' * バージョンに''-SNAPSHOT''がついているプロジェクトの成果物の配備先 ==== プロジェクトを配備するためのユーザを追加 ==== - GUIに管理者ユーザでログイン - GUIの左にあるメニューから、''USERS''の下の''Manage''を選択 - ''Users List''の下の''Add''を選択してユーザを追加、''Validated''はチェックしておいた方が良さそう、必要事項を記入したら''Save''をクリック - 追加したユーザの''Edit''をクリック、さらに''Edit Roles''を選択、参照するリポジトリの''Repository Observer''をチェック、更新するリポジトリの''Repository Manager''をチェック、''Update''をクリック ==== Mavenでプロジェクトを配備する ==== ''settings.xml''にリポジトリやミラー、ユーザ名/パスワードを設定。 各プロジェクトの''pom.xml''で配備先のリポジトリを指定する。 配備は''mvn deploy''。 === settings.xml === ''settings.xml''は通常''${user.home}/.m2/settings.xml''にある。 ''mvn''のオプション''-s''で指定可能。 詳細は[[https://maven.apache.org/settings.html]]を参照。 archiva.internal username password archiva.snapshots username password archiva.internal Archiva Managed Internal Release Repository http://192.168.0.11:8080/repository/internal central archiva repo true archiva.internal Archiva Managed Internal Release Repository http://192.168.0.11:8080/repository/internal true false archiva.snapshots Archiva Managed Internal Snapshot Repository http://192.168.0.11:8080/repository/snapshots false true === pom.xml === archiva.internal Archiva Managed Internal Release Repository http://192.168.0.11:8080/repository/internal archiva.snapshots Archiva Managed Internal Snapshot Repository http://192.168.0.11:8080/repository/snapshots === 配備 === mvn deploy ''deploy''を実行するプラグインの詳細は[[http://maven.apache.org/plugins/maven-deploy-plugin/index.html|Apache Maven Deploy Plugin]]を参照。 GUIの''http://192.168.169.206:8080/#search''や''http://192.168.0.11:8080/#browse''から配備されたファイルを確認できる。 ===== Staging Repositories ===== RELEASEの成果物を、まずはStaging用リポジトリに配備。 Staging用リポジトリを指定して成果物を取得し、テストする。 動作を確認した後にリリース用リポジトリにマージする。 ユーザはリリース用リポジトリから成果物を取得する。 まずは、リポジトリの準備が必要。 リポジトリ作成時に、''Staging Repository''にチェックを付ける。 ''''と''-stage''のリポジトリができる。 Mavenで配備するときは、''-stage''の方に配備。 ''-stage''から成果物を取得してテストする。 テストが完了したら、GUIの''Repositories''から、 ''-stage''の''Actions''をクリックし''Merge this repository''を選択。 リリース用のリポジトリ''''を選択してマージする。 実際にはリポジトリ内の成果物を全てコピーしている。 ユーザの権限設定がリポジトリ単位であることを考えると、 グループごとにリポジトリを作成した方が運用方法として正しそう。 ===== Repository Groups ===== Virtual Repositoryとも呼んでいる。 複数のリポジトリを一つのリポジトリに見せる。 このリポジトリは参照のみ可能。 Staging Repositoriesで書いたようにプロジェクトごとに複数のリポジトリを作成すると、 Mavenの''settings.xml''にすべてのリポジトリを設定して最新に保つのが大変。 Repository Gorupsでまとめておくと、参照に関しては一つのリポジトリを設定するだけで済む。 RELEASEの配備先はプロジェクトのStage用リポジトリを設定。 最後のマージはGUIから。 archiva.repo username password archiva.snapshots username password project.staging username password archiva.repo Archiva Managed Internal Release Repository http://192.168.0.11:8080/repository/maven2 central archiva repo true archiva.repo Archiva Managed Virtual Release Repository http://192.168.0.11:8080/repository/maven2 true false archiva.snapshots Archiva Managed Internal Snapshot Repository http://192.168.0.11:8080/repository/snapshots false true project.staging Archiva Managed Internal Release Repository http://192.168.0.11:8080/repository/project-stage true false project.staging http://192.168.0.11:8080/repository/project-stage archiva.snapshots http://192.168.0.11:8080/repository/snapshots