2017-02-11 10 views
6

含みます。このプロジェクトは、Selenium/cucumber APIに基づいて構築されています。ビル単一脂肪ジャー - テストクラス私は、マルチモジュールのMavenプロジェクトからの脂肪のjarファイルを構築するために必要な状況にいるよ

Parent -- pom 
    | 
    |__core_module src/main/java --> helper classes for selenium 
    | 
    |__acme_module src/main/test --> Test Classes for acme project 

を次のように私のプロジェクトの

構造は、私は私を助けたそれらのcore_module + acme_module.But何が含まれていない「acme_test.jar」を構築するためのさまざまな方法を試してみましたです。これを解決するために多くの

は、任意の手掛かりを感謝しています。脂肪のモジュールとして

+0

で含めるフィルタを追加することにより、core_moduleを含めることができ

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <id>create-fat-jar</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <!-- add Main-Class to manifest file --> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>your.main.class</mainClass> </transformer> </transformers> <finalName>YourJarName</finalName> </configuration> </execution> </executions> </plugin> 

それは何をあなたは本当に不明ですここでやりたい'acme_test.jar'とは何か、' acme_module'とは何か、それが正確に何を含んでいるのか、どのように関係しているのですか? – Tunaki

+0

これは、acmeのセレンテストケースのヘルパーフレームワークを構築しようとしているところです。 core_moduleは、セレンのヘルパーとユーティリティのすべてのクラスを保持し、acme_moduleは "acme"のテストクラスを保持します。私たちが試みているのは、これらの2つのモジュール(すべての依存関係を持つ)から、その技術に精通していないクライアントに、関連するセットアップを避けるためにfat jar(executable-core_module + acme_module = acme_fat_test.jar)をビルドすることです。 – kallada

+0

'src/test/java'を意味しますか?この 'src/main/test'は正しいですか? – MariuszS

答えて

3

@MariuszSは述べているように、最初の再構築プロジェクトあなたがテストアクメ(=ドライブ/のためのナビゲーションを検証する)実際のクラスのいずれかのユニットテストや統合テストを分離するように。

Parent -- pom 
    | 
    |__core_module src/main/java --> helper classes for selenium 
    | 
    |__acme_module src/main/java --> Classes specific for navigating acme 
    | 
    |__acme_module src/test/java--> (Unit etc) Test Classes for acme project 

次に、core_moduleを依存関係として含めるにはacme_moduleが必要です。

最後に、acme_moduleで、ビルドのプラグインセクションでこれを置く:あなたはまた、明示的にプラグイン構成セクション

+0

もちろんコアモジュールも_core_module/src/test/java_の下でテストする必要があります。 – kriegaex

+2

また、あなたはあなたのモジュールが日陰瓶内で解凍したくない場合は、あなたが使用することができます[onejar-のmaven-pluginの](https://code.google.com/archive/p/onejar-maven-plugin/)ようにネストされたJARのuber JARを作成します。つまり、変更されていないJARをuber JARから直接ロードする特別なクラスローダーがあります。 [this fork](https://github.com/jolira/onejar-maven-plugin)からMaven Centralでも入手できます。あなた(kallada)がそれについてもっと知りたいのであれば、それを答えとして受け入れるチャンスがあります。ただ教えてください。私はそれを準備します。しかしMaven Shadeも仕事をしますが、この答えは正しいです。 – kriegaex

+0

申し訳ありませんが、人は何らかの個人的な理由により時間内にあなたに返信することができませんでした。 – kallada

4

設定acme_module

おかげで - このモジュールは、すべての依存関係を持つ実行可能な脂肪jarを生成する必要があります。

は、依存関係としてacme_modulecore_moduleを追加します。

このクラスは、実行する必要がありますので、 src/test/javaから src/main/javaにあなたのテストクラスを移動し

。テスト(junitのような)がある場合は、このクラスをtestディレクトリのままにしておきますが、実行可能な部分はmainにとどまります。

関連する問題