English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Maven 自動化構築

自動ビルド定義は、プロジェクトが成功してビルドが完了した後、その関連する依存プロジェクトがビルドを開始することを定義しています。これにより、依存プロジェクトの安定性を保証できます。

例えば、あるチームがbusプロジェクトを開発している場合-コア-API、他に2つのプロジェクトがapp-ウェブ-ui と app-デスクトップ-UIはこのプロジェクトに依存しています。

app-ウェブ-UIプロジェクトが使用しているbus-コア-APIプロジェクトの 1.0 スナップショット:

<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>app-ウェブ-ui</groupId>
   <artifactId>app-ウェブ-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
      <groupId>bus-コア-api</groupId>
         <artifactId>bus-コア-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

app-デスクトップ-UIプロジェクトが使用しているbus-コア-APIプロジェクトの 1.0 スナップショット:

<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>app-デスクトップ-ui</groupId>
   <artifactId>app-デスクトップ-ui</artifactId>
   <version>1.0</version>
   <packaging>jar</packaging>
   <dependencies>
      <dependency>
      <groupId>bus-コア-api</groupId>
         <artifactId>bus-コア-api</artifactId>
         <version>1.0-SNAPSHOT</version>
      </dependency>
   </dependencies>
</project>

bus-コア-APIプロジェクト:

<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>bus-コア-api</groupId>
   <artifactId>bus-コア-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>   
</project>

現在のapp-ウェブ-ui と app-デスクトップ-UIプロジェクトのチームはbusに関わらず、以下の要件を求めています。-コア-APIプロジェクトがどのタイミングで変更されるかに関わらず、そのビルドプロセスは実行可能でなければなりません。

スナップショットを使用することで最新のbusを確保できます-コア-APIプロジェクトが使用されていますが、上記の要件を満たすには、追加の作業が必要です。

二つの方法が使用できます:

  • busで-コア-APIプロジェクトのpomファイルにPOSTを追加します-アプリケーションを起動するためのターゲット操作を構築します-ウェブ-ui と app-デスクトップ-ui プロジェクトのビルド。

  • CI サーバー(例えば Hudson)を使用してビルド自動化を自分で管理します。

Maven を使用して

bus-コア-api プロジェクトの 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>bus-コア-api</groupId>
   <artifactId>bus-コア-api</artifactId>
   <version>1.0-SNAPSHOT</version>
   <packaging>jar</packaging>
   <build>
   <plugins>
   <plugin>
      <artifactId>maven-invoker-plugin</artifactId>
      <version>1.6</version>
      <configuration>
         <debug>true</debug>
         <pomIncludes>
            <pomInclude>app-ウェブ-ui/pom.xml</pomInclude>
            <pomInclude>app-デスクトップ-ui/pom.xml</pomInclude> 
         </pomIncludes>
      </configuration>
      <executions>
         <execution>
            <id>build</id>
            <goals>
               <goal>run</goal>
            </goals>
         </execution>
      </executions>
   </plugin>
   </plugins>
   </build>
</project>

コマンドプロンプトを開き、C:\ > MVN > bus に移動します-コア-api ディレクトリの下に移動し、以下のコマンドを実行します。

C:\MVN\bus-コア-api>mvn clean package -U

コマンドを実行した後、Maven はプロジェクト bus のビルドを開始します-コア-api。

[INFO] プロジェクトのスキャン...
[INFO] ------------------------------------------------------------------
[INFO] ビルディング bus-コア-api
[INFO] task-セグメント: [clean, package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] ビルディング jar: C:\MVN\bus-コア-ui\target\
bus-コア-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

bus-コア-api の構築が成功すると、Maven は app の構築を開始します-ウェブ-ui プロジェクト。

[INFO] ------------------------------------------------------------------
[INFO] Building app-ウェブ-ui 
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] Building jar: C:\MVN\app-ウェブ-ui\target\
app-ウェブ-ui-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------

app-ウェブ-ui の構築が成功すると、Maven は app の構築を開始します-デスクトップ-ui プロジェクト。

[INFO] ------------------------------------------------------------------
[INFO] Building app-デスクトップ-ui 
[INFO] task-segment: [package]
[INFO] ------------------------------------------------------------------
...
[INFO] [jar:jar {execution: default-}
[INFO] Building jar: C:\MVN\app-デスクトップ-ui\target\
app-デスクトップ-ui-1.0-SNAPSHOT.jar
[INFO] -------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------

継続的インテグレーションサーバー(CI)を使用する

CI サーバーを使用する場合、私たちは常に新しいプロジェクトを、例えば例の app-モバイル-ui を追加して bus-コア-api プロジェクトを作成する場合、開発者は bus-コア-api プロジェクトの pom。Hudson は Maven の依存関係管理機能を使用してプロジェクトの自動化を作成します。

Hudson は各プロジェクトの構築をタスクとして扱います。プロジェクトのコードが SVN (または Hudson にマッピングされている任何のコード管理ツール)にコミットされた後、Hudson はプロジェクトの構築タスクを開始し、構築タスクが完了すると、Hudson は自動的に他の依存関係の構築タスク(他の依存関係プロジェクトの構築)を開始します。

上記の例では、bus-コア-ui のソースコードが SVN 更新後、Hudson がプロジェクトの構築を開始します。一旦構築が成功すると、Hudson は自動的に依存関係のプロジェクトを検索し、app の構築を開始します-ウェブ-ui と app-デスクトップ-ui プロジェクト。