Developer Cloud Serviceのビルド成果物をMavenリポジトリに公開する
Developer Cloud Service(以下、DevCS)は、Gitリポジトリ、バグトラッカーなどの開発ツール群を一括で提供する、Oracle社のクラウドサービスです。
DevCSでは、HudsonベースのCI(継続的インテグレーション)ツールでMavenビルドをおこない、さらに成果物をDevCS上のMavenリポジトリに公開することができます。
今回は、DevCSのMavenリポジトリを使って、以下の機能を実現する方法をご紹介します。
1. ビルド成果物をDevCSのMavenリポジトリに公開する
1-1. MavenリポジトリのURLを確認する
DevCSでビルドしたいプロジェクトのHomeにアクセスすると、画面右に、Gitリポジトリ、MavenリポジトリのURLが表示されています。 ここでMavenリポジトリの [HTTP] を選択し、URLをテキストエディタ等にコピーしておきます。
1ー2. pom.xmlにデプロイ用の設定を記述する
pom.xmlに記述する内容は、通常の記述と同様です。 jackrabbitプラグインと、デプロイ先リポジトリの情報を記述します。
distributionManagement > repository > urlのタグには、1-1で控えておいたリポジトリのURLを記述します。
以下、pom.xmlのサンプルです。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- Build Settings --> <build> <extensions> <extension> <groupId>org.apache.maven.wagon</groupId> <artifactId>wagon-webdav-jackrabbit</artifactId> </extension> </extensions> </build> <!-- Environment Settings --> <distributionManagement> <repository> <id>com.charleysdiary.HelloWorld</id> <name>Sample HelloWorld Project</name> <url>dav:https://developer.us2.oraclecloud.com/profile/developer00000-sampledomain00000/s/sampledomain-sampledomain00000_HelloWorld/maven/</url> </repository> </distributionManagement> </project>
この例では、ビルド環境と同じDevCSプロジェクトのMavenリポジトリに、成果物を公開します。このような場合、Mavenリポジトリにアクセスする際の認証情報等の設定は不要です。
pom.xmlの修正だけで作業完了です。
1-3. Cyberduckで確認してみる
Cyberduck(WebDAVクライアント)で、公開された成果物を確認してみます*1。
まずは、Cyberduckをダウンロード&インストールします。
続いて、Cyberduckを起動し、[新規接続]をクリック
[新規接続]ダイアログで、以下の画像のように入力します。 [Server]は1-1で控えておいたURLのホスト名、[Path]は同URLのPath部分、ユーザー名とパスワードにはDevCSにログインするときのものを入力します。
[Connect]をクリックすると、Mavenリポジトリにデプロイされた成果物を確認することができます。
2. 1. で公開された成果物に依存するMavenプロジェクトを作成する
2-1. pom.xmlに依存関係を記述する
依存元のプロジェクトのpom.xmlで、repositoryとdependencyの配下に、依存先のリポジトリとモジュールの情報を記述します。
以下、記述例です。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorldClient</artifactId> <version>0.0.1-SNAPSHOT</version> <!-- Environment Settings --> <dependencies> <dependency> <groupId>com.charleysdiary</groupId> <artifactId>HelloWorld</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <repositories> <repository> <id>com.charleysdiary.HelloWorld</id> <name>Sample HelloWorld Project</name> <url>https://developer.us2.oraclecloud.com/profile/developer00000-sampledomain00000/s/sampledomain-sampledomain00000_HelloWorld/maven/</url> </repository> </repositories>
依存先のプロジェクトが、DevCSの同一アイデンティティ・ドメイン上のプロジェクトの場合、必要な作業はこれだけです。
2-2. settings.xmlに参照先リポジトリの認証情報を記述する
依存元のプロジェクトが、依存先リポジトリのアイデンティティドメイン外にある場合(e.g. ローカルでビルドするとき)、依存先リポジトリにアクセスするための認証情報を、settings.xmlに記述します。
username、passwordには、アイデンティティドメインにログインするときに使用する値を設定します。
以下、記述例です。
<?xml version="1.0" encoding="UTF-8"?> <settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <servers> <server> <id>com.charleysdiary.HelloWorld</id> <username>sample@charleysdiary.com</username> <password>password</password> </server> </servers> </settings>