2013年4月26日金曜日

Tycho を使って Eclipse 4 アプリをビルドする(1) 最少のプロジェクト構成

以前のポスト「Maven と Tycho を使ってビルドを自動化する(1)(2)(3)」では、Tycho により 3.x RCPをビルドする方法について書きました。 tycho は最新バージョンが 0.17.0 になり、Eclipse も 4.3 M6 がリリースされ、どちらもさらに完成度が高くなっています。今回は、最新の Eclipse と tycho を使った Eclipse 4 RCP のビルドを説明します。3.x RCP のプロジェクト構成は以下のようなものでした(テストプロジェクトは除いてます):
  • com.itrane.mycontact
  • com.itrane.mycontact.db
  • com.itrane.mycontact.pdf
  • com.itrane.mycontact.z_product
  • com.itrane.mycontact.z_feature
  • com.itrane.mycontact.z_platform
  • com.itrane.mycontact.z_site
  • com.itrane.mycontact.zbuild

4.x RCP では少し簡単にします(とりあえず、DBとPDF機能とテストは除きます):
  • e4contact       (プラグイン:E4アプリケーション)
  • e4contact.zbuild    (ビルド用)
  • e4contact.zfeature   (フィーチャー)
  • e4contact.zrepository (リポジトリ)

親プロジェクト e4contact.zbuild の作成
Eclipse のメニューから File > New > Project...  General/Project を選択して一般プロジェクトを作成します。

作成されたプロジェクトを選択して、ポップアップメニューから Configure > Convert to Maven Project を選択します。そして表示されるダイアログで次のように入力して Finish を押してください。

作成された pom.xml を開いて、すべてのモジュールで使う共通設定を追加します。  修正された 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>e4contact</groupId>
  <artifactId>e4contact.zbuild</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

    <!-- すべてのモジュールに対する共通設定 -->
    <properties>
        <tycho-version>0.17.0</tycho-version>
    </properties>

    <repositories>
        <!-- ビルドのための p2 リポジトリの設定 -->
        <repository>
            <id>eclipse-platform-m6</id>
            <layout>p2</layout>
            <url>http://download.eclipse.org/eclipse/updates/4.3milestones/S-4.3M6-201303141330</url>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <!-- Tycho ビルド拡張を有効にする -->
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-maven-plugin</artifactId>
                <version>${tycho-version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>

この後作成するそれぞれのプロジェクト(サブプロジェクト)はこの親プロジェクトの pom.xml (親 POM)から情報を継承します。

Eclipse 4 アプリケーションプロジェクト e4contact の作成
メニューから File > New > Project... > Eclipse 4/Eclipse 4 Application Project を選択して、Next をクリックします。以下の画面で、プロジェクト名とロケーションを設定して、Next をクリックします。


次のページはデフォルト設定のまま Next をクリックします。そして以下の画面で、"Create sample content" をチェックして Finish を押します。


作成されたプロジェクトに、次のような 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>

    <parent>
        <groupId>e4contact</groupId>
        <artifactId>e4contact.zbuild</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../e4contact.zbuild/</relativePath>
    </parent>

    <artifactId>e4contact</artifactId>
    <packaging>eclipse-plugin</packaging>

</project>


フィーチャープロジェクト e4contact.zfeature の作成
メニューから File > New > Feature Project を選択して、以下のように設定して Next をクリックします。

次のページで、参照プラグインとして、e4contact を設定して Finish をクリックします。


作成されたフィーチャープロジェクトに、次のような 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>

    <parent>
        <groupId>e4contact</groupId>
        <artifactId>e4contact.zbuild</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../e4contact.zbuild/</relativePath>
    </parent>

    <artifactId>e4contact.zfeature</artifactId>
    <packaging>eclipse-feature</packaging>

</project>


リポジトリプロジェクト e4contact.zrepository の作成
メニューから File > New > Project... > General/Project を選択して一般プロジェクトを作成します。

作成したプロジェクトを選択して、ポップアップメニューから New > Other... > Plug-in Development/Category Definition を選択して、category.xml を作成します。 category.xml を開いて、"New Category" ボタンをおして、新規カテゴリを追加し、"Add Feature..." ボタンを押して、追加したカテゴリに、e4contact.zfeature を追加します(下図):

e4contct プロジェクトの e4contat.product を e4contact.zripository に移動します。移動した製品構成を開いて、Confguration タブで Start Levels セクションに、以下のプラグインを追加して、それぞれのスタートレベルと自動スタートを設定します:

  • org.eclipse.equinox.common (2, ture)
  • org.eclipse.equinox.ds         (2, true)
  • org.eclipse.core.runtime      (0, true)


Overview タブで、ID に e4contact.product を設定し、製品構成をフィーチャーベースに変更します:


Dependencies タブで、フィーチャーに e4contact.zfeature と org.eclipse.rcp を追加して、"Add Required" ボタンを押します。 その結果、追加フィーチャーは以下のようになります:


他のモジュールと同様に、このプロジェクトに以下のような 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>

    <parent>
        <groupId>e4contact</groupId>
        <artifactId>e4contact.zbuild</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../e4contact.zbuild</relativePath>
    </parent>

    <artifactId>e4contact.zrepository</artifactId>
    <packaging>eclipse-repository</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-p2-director-plugin</artifactId>
                <version>${tycho-version}</version>
                <executions>
                    <execution>
                        <!-- p2 ディレクターを使ってプロダクトをインストール -->
                        <id>materialize-products</id>
                        <goals>
                            <goal>materialize-products</goal>
                        </goals>
                    </execution>
                    <execution>
                        <!-- インストールされたプロダクトから zip ファイルを作成 -->
                        <id>archive-products</id>
                        <goals>
                            <goal>archive-products</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

この pom.xml には、プロダクトのインストールとアーカイブを作成するためのビルドを設定します。

親POMに各サブプロジェクトを追加
e4contact.zbuild/pom.xml に 要素を追加して、このプロジェクトのサブプロジェクトを指定します。最終的に親POMは以下のようになります:
<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>e4contact</groupId>
  <artifactId>e4contact.zbuild</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>pom</packaging>

    <modules>
        <module>../e4contact</module>
        <module>../e4contact.zfeature</module>
        <module>../e4contact.zrepository</module>
    </modules>

    <!-- すべてのモジュールに対する共通設定 -->
    <properties>
        <tycho-version>0.17.0</tycho-version>
    </properties>

    <repositories>
        <!-- ビルドのための p2 リポジトリの設定 -->
        <repository>
            <id>eclipse-platform-m6</id>
            <layout>p2</layout>
            <url>http://download.eclipse.org/eclipse/updates/4.3milestones/S-4.3M6-201303141330</url>
        </repository>
    </repositories>

    <build>
        <plugins>
            <plugin>
                <!-- Tycho ビルド拡張を有効にする -->
                <groupId>org.eclipse.tycho</groupId>
                <artifactId>tycho-maven-plugin</artifactId>
                <version>${tycho-version}</version>
                <extensions>true</extensions>
            </plugin>
        </plugins>
    </build>
</project>

ビルドの実行
e4contact.zbuild/pom.xml を選択して、ポップアップメニューから Run As > Maven Build... とし、ゴールとして、clean install を入力します。
・・・
[INFO] e4contact.zbuild .................................. SUCCESS [0.492s]
[INFO] e4contact ......................................... SUCCESS [3.400s]
[INFO] e4contact.zfeature ................................ SUCCESS [0.275s]
[INFO] e4contact.zrepository ............................. SUCCESS [22.645s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 45.048s
・・・

上に示すようにビルドが成功し、e4contact.zripository の target/products フォルダ下のビルドプラットフォームに対応したフォルダ(この場合 win32/win32/x86)にプロダクトがインストールされます。そして、そのプロダクトから zip アーカイブが生成されます(下図):

プロダクトの eclipse.exe を実行すると、IDE から実行した場合と同様に以下の画面が表示されます。








0 件のコメント: