2017-01-30 75 views
0

我有一個項目結構,在那裏我有一些基本的項目,所有的功能都實現,最重要的是對不同種類的使用/部署的一些項目如下:如何依靠WebApplicationInitializer項目?

  • 富核
  • foo-production,取決於foo-core(生成戰爭文件並且交付給客戶)
  • foo-standalone,取決於foo-core(產生用於內部測試的戰爭)
  • foo-ui-test,取決於foo-core(用Arquillian + Selenium進行UI測試)

現在我有越來越多的是foo的,獨立的和富的UI測試有用的類,但我不希望這些類部署到客戶。因此,foo-core作爲一個可能的項目存放在這些類中。剩下的兩個選項是:

  1. 一個新項目富輔助依賴於foo的核心,使FOO,獨立和Foo-UI測試依賴於foo-幫手,而不是foo的核心。
  2. 製作富的UI測試依賴於foo-獨立

我想去選項2,因爲我已經有很多的項目。選項2剩下的問題是,這兩個項目(富-獨立和Foo-UI-test)中有一個春天WebApplicationInitializer ... 現在我用我的編譯系統撥弄左右(我的gradle使用),並能排除Web獨立項目中的WebApplicationInitializer,並且僅在構建foo-standalone.war文件時明確包含它。

foo-standalone生成的build.gradle文件似乎是「hackish」,如果我重命名或移動WebApplicationInitializer類,它將會中斷。我想知道,如果有另一種方法來實現我正在尋找的東西,或者如果我不得不做一個新的項目。

更新 從我的src/main/java下爲src /初始化/ Java的移動WebApplicationInitializer類和改變FOO,獨立的的build.gradle如下:

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

war { 
    classpath sourceSets.init.runtimeClasspath 
} 

我想這是最短的,自定義的方式來做到這一點,或者是否有任何內置的gradle功能來做到這一點?

回答

0

Maven將只允許你有一個依賴於一個JAR項目。有一個功能,你可以有戰爭覆蓋,一個戰爭項目擴展了一個孩子並覆蓋了某些位(見https://maven.apache.org/plugins/maven-war-plugin/overlays.html),這似乎是你的foo-standalone和foo-ui-test之間的關係。

所以要富輔助戰項目,使富 - 獨立,富的UI測試和Foo生產使用戰爭疊加擴展它。

foo-core可以保留爲jar,如果有非生產位創建foo-core-internal,則依賴foo-core和ring來限制內部/測試位。

+0

感謝您的回答,但我使用gradle而不是Maven。我想避免創建foo-helper項目... – schauk11erd