2009-07-09 10 views
2

プロジェクトは、コアライブラリのコード、テスト、およびサンプルコードを含むライブラリです。ビルドプロセスの最後に、次のアーカイブを作成する必要があります。mavenを使用したサンプルコードアーカイブ

  • xy-1.1.0-core.jar
  • xy-1.1.0-tests.jar
  • xy-1.1.0-examples.jar

のmavenでこれをセットアップするための最良の方法は何ですか? 現在の設定は次のとおりです。

src 
src/main/java 
src/examples/java 
src/test/java 

また、すべての依存関係を含むlibディレクトリがあるはずです。 xy-jars、ライブラリjar、およびその他のスクリプトは、リリースファイルxy-1.1.0.tar.gzにパックする必要があります。

+0

この質問は建設的ではないと私は同意しません - 私はMavenの規約の中であなたが利用できるオプションを参考に答えが役立つことを発見しました。これは、過度の積極的な緩和のケースかもしれないと考えてください。 – cwash

答えて

5

Mavenの大きなメリットの1つは、「対話型のコンベンション」です。つまり、Mavenにアプリをクローバーしようとするか、クローバーMavenにしようとする選択肢があるときですあなたのアプリに - あなたのアプリをMavenに入れるのは、一般に簡単です。

おそらく、単一の「プロジェクト」をコアとサンプルの2つのMavenプロジェクトに分割する方が簡単になるでしょう。 Mavenは「プロジェクト」を、JARファイル、WARファイル、EARファイルなど、単一のアーティファクトを作成するものとして扱います(これにはいくつかの例外があります - 例えば、テスト用のjarファイルですが、後で説明します)。おそらく、 "例"をモジュール、サブプロジェクト、または "コア"プロジェクトに依存する別のプロジェクトとして扱う方が簡単になるでしょう。

「テスト」の部分には「コア」または「コア」と「サンプル」のテストが含まれていますか?それが唯一のコアなら、これをコアプロジェクトのテストディレクトリに移動したいと思うでしょう。両方の場合は、それを分割して単体テストを適切なプロジェクトに移動する必要があります。

プロジェクトのテストコードのJARを生成するには、guide to attached testsに詳しく説明されているように、maven-jar-pluginを設定します。

Mavenを介してビルドされたすべてのプログラムのすべての依存関係を "ローカルリポジトリ"に保存します - 一般に%user_directory%/。m2以下の多くのディレクトリに保存されます - Mavenにプロジェクトのすべての依存関係を指定ディレクトリ:dependency plugin pageで詳しく説明されている依存関係:コピー依存関係を使用します。

最終的なタールを構築するには、以前のプロジェクトを使用してAssemblyを作成します。

2

ネイトが大部分をカバーしていましたが、具体的な例を示します。次のようにあなたのサブモジュールを表します、

ベースポンポンで
pom.xml 
src/main/assembly/assembly.xml 
core/pom.xml 
core/src/main/java/... 
core/src/test/java/... 
examples/pom.xml 
examples/src/main/java/... 

:ここ

は、ディレクトリレイアウトは以下のようになります方法です

<modules> 
    <modules>core</modules> 
    <modules>examples</modules> 
</modules> 

お使いのベースのgroupIdが「com.companyであると仮定すると、 。たとえば、」あなたたartifactIdある 『XY』、そして、あなたのモジュールのPOMSは(もちろん、名前とバージョンの調整)以下で始まります:

<parent> 
    <groupId>com.company.example</groupId> 
    <artifactId>xy</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
</parent> 
<groupId>com.company.example</groupId> 
<artifactId>xy-core</artifactId> 
<version>1.0.0-SNAPSHOT</version> 

アセンブリは、ベースのプロジェクトで実行することを確認するために、含まビルド設定で、次の

また
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <descriptors> 
     <descriptor>src/main/assembly/assembly.xml</descriptor> 
    </descriptors> 
    </configuration> 
</plugin> 

、コア/ pom.xmlファイルにこれを追加し、テストクラスのための独立したjarファイルを構築するために:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <executions> 
    <execution> 
     <goals> 
     <goal>jar</goal> 
     <goal>test-jar</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

assembly.xml自体のwiは、次のようになります:

<assembly> 
    <id>assembly</id> 
    <formats> 
    <format>tar.gz</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <moduleSets> 
    <moduleSet> 
     <binaries> 
     <dependencySets> 
      <dependencySet> 
      <outputDirectory>lib</outputDirectory> 
      </dependencySet> 
     </dependencySets> 
     <outputDirectory>lib</outputDirectory> 
     </binaries> 
    </moduleSet> 
    </moduleSets> 
</assembly> 

ここではいくつか不足していますが、それは一般的な考えです。

関連する問題