2017-01-30 4 views
0

は、私はすべての機能が、使用/展開の種類ごとにいくつかのプロジェクトを実施し、その上にされているいくつかの基本的なプロジェクトを持っているところ、以下のように、プロジェクト構造を持っている:WebApplicationInitializerでプロジェクトに頼る方法は?

  • のfoo-コア
  • foo-core(foo-coreに依存します)(foo-coreに依存します。)
  • foo-standaloneは、foo-coreに依存します(内部テスト用のwarを生成します)。
  • foo-ui-test、 foo-coreに依存(Arquillian + SeleniumのUIテスト)

foo-standaloneとfoo-ui-testに便利なクラスが増えていますが、これらのクラスを顧客に配備したくありません。したがって、foo-coreは、これらのクラスを格納する場所として考えられています。残りの2つのオプションは次のとおりです。

  1. fooのコアに依存し、FOO-スタンドアロンとFOO-UIテストがfoo-ヘルパーの代わりに、fooのコアに依存させる新しいプロジェクトfooのヘルパー。
  2. のfoo-UIテストを行いFOO-スタンドアロン

に依存し、私は私はすでに多くのプロジェクトを持っているとして、オプション2のために行きたいです。オプション2の残りの問題は、これらのプロジェクト(foo-standaloneとfoo-ui-test)にSpring WebApplicationInitializerがあることです... 今私はビルドシステム(私はgradleを使用しています)を迂回し、 WebApplicationInitializerをfoo-standaloneプロジェクトに組み込み、foo-standalone.warファイルを作成するときに明示的に組み込むだけです。

foo-standaloneのbuild.gradleファイルは "hackish"と思われ、WebApplicationInitializerクラスの名前を変更したり移動したりすると破損します。私が探しているものを達成するための別の方法があるか、新しいプロジェクトを作る必要があるかどうかは疑問です。

更新 私はSRC /メイン/ Javaからのsrc/INIT/JavaへWebApplicationInitializerクラスを移動し、次のようにFOO-スタンドアロンのbuild.gradleを変更:

sourceSets { 
    init { 
    java { 
     compileClasspath += sourceSets.main.runtimeClasspath 
    } 
    } 
} 

war { 
    classpath sourceSets.init.runtimeClasspath 
} 

私はそれが最短だと思います、これを行うためのカスタム方法、またはこれを行う組み込みのグラデーション機能はありますか?

答えて

0

Mavenでは、JARプロジェクトにのみ依存することができます。 1つの戦争プロジェクトが子を拡張して特定のビットを上書きするwar overlayを持つことができる機能があります(https://maven.apache.org/plugins/maven-war-plugin/overlays.html参照)。これは、あなたのfoo-standaloneとfoo-ui-testの関係のようです。

foo-helperをwarプロジェクトにし、foo-standalone、foo-ui-test、foo-productionをwarオーバーレイを使って拡張します。

非生産ビットがある場合、foo-coreに依存するfoo-core-internalを作成し、内部/テストビットをフェンスリングすることができます。

+0

回答ありがとうございますが、私はMavenではなく、gradleを使用しています。そして、私はfoo-helperプロジェクトの作成を避けたいと思います... – schauk11erd

関連する問題