[英]Gradle build multi modules project with transitive dependencies
我在構建簡單的應用程序時遇到問題。 它包含3個模塊,ejb,休息和耳朵,應在其中包括休息。 為此,我將build.gradle編寫為以下內容之一。 但是我仍然有問題。 內置的耳朵看起來像:
ear-1.0.ear
|--ejbs-1.0.jar
|--rest-1.0.jar
|--lib
|--ejbs-1.0.jar
|--other libs..
如您所見,我在這里復制了ejbs-1.0.jar
。 我沒有想要的東西,所以我嘗試解決此問題。 我嘗試了兩種在網絡上找到的方法,但都沒有用。 第一個(帶有標簽1的注釋)從lib dir中排除了所有rest
依賴項。 第二個(標簽2)做了同樣的事情,但還把rest-1.0.jar
包含在lib中,這使它更糟。 現在,我不知道如何編寫build.gradle
因此它將由子項目創建的jar放入根目錄,並將其依賴項放入lib dir。 我也嘗試用標簽3編寫類似注釋的內容,但這會使腳本失敗。 是否有簡單的方法可以使用類似的語法將其排除在外?
project(":ejbs") {
apply plugin: "java"
dependencies {
compile group: 'javax.ejb', name: 'javax.ejb-api', version: '3.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.2'
}
}
project(":rest") {
apply plugin: "java"
dependencies {
compile project(':ejbs')
compile group: 'javax.ejb', name: 'javax.ejb-api', version: '3.2'
compile group: 'javax.ws.rs', name: 'jsr311-api', version: '0.11'
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.2'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.2'
}
}
project(":ear") {
apply plugin: "java"
apply plugin: "ear"
dependencies {
//1: def nonTransitive = {transitive = false}
deploy project(":ejbs")
deploy project(":rest")
earlib project(path:":ejbs", configuration:"compile")
earlib project(path:":rest", configuration:"compile")//1: , nonTransitive
//2: add('earlib', project(':rest')) {
// transitive = false
//}
//3: earlib project(path:":rest", configuration:"compile") {
// exlude project(':ejbs')
//}
}
}
我終於找到了解決方案。 我是這樣寫的:
project(":ear") {
apply plugin: "java"
apply plugin: "ear"
dependencies {
deploy project(":ejbs")
deploy project(":rest")
earlib project(path:":ejbs", configuration:"compile")
earlib(project(path:":rest", configuration:"compile")) {
exclude module: 'ejbs'
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.