Developer Cloud Serviceのビルド成果物をMavenリポジトリに公開する

Developer Cloud Service(以下、DevCS)は、Gitリポジトリ、バグトラッカーなどの開発ツール群を一括で提供する、Oracle社のクラウドサービスです。

DevCSでは、HudsonベースのCI(継続的インテグレーションツールMavenビルドをおこない、さらに成果物をDevCS上のMavenリポジトリに公開することができます。
今回は、DevCSのMavenリポジトリを使って、以下の機能を実現する方法をご紹介します。

  1. ビルド成果物をDevCSのMavenリポジトリに公開する
    1. で公開された成果物に依存するMavenプロジェクトを作成する

1. ビルド成果物をDevCSのMavenリポジトリに公開する

1-1. MavenリポジトリのURLを確認する

DevCSでビルドしたいプロジェクトのHomeにアクセスすると、画面右に、GitリポジトリMavenリポジトリのURLが表示されています。 ここでMavenリポジトリの [HTTP] を選択し、URLをテキストエディタ等にコピーしておきます。

f:id:charlier_shoe:20150825140205p:plain

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で確認してみる

CyberduckWebDAVクライアント)で、公開された成果物を確認してみます*1

まずは、Cyberduckをダウンロード&インストールします。

続いて、Cyberduckを起動し、[新規接続]をクリック

f:id:charlier_shoe:20150825140214p:plain

[新規接続]ダイアログで、以下の画像のように入力します。 [Server]は1-1で控えておいたURLのホスト名、[Path]は同URLのPath部分、ユーザー名とパスワードにはDevCSにログインするときのものを入力します。

f:id:charlier_shoe:20150825140221p:plain

[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>

DevCSのMavenリポジトリに成果物を公開し、それを利用する方法は、以上です。