[英]Gradle 'Provided' dependency for Java plugin
我正在嘗試編譯幾個WAR文件,所有這些都取決於一個常見的JAR模塊。 然而,在我的Gradle構建中,我似乎無法獲得使用Java插件的“提供”之類的依賴項。
我的編譯看起來像這樣:
apply plugin: 'java'
configurations{
providedCompile
}
dependencies {
compile module("org.springframework.amqp:spring-amqp:${springAmqpVersion}")
compile module("org.slf4j:slf4j-api:${slf4jVersion}")
compile module("org.slf4j:slf4j-ext:${slf4jVersion}")
providedCompile "javax.servlet:servlet-api:${servletApiVersion}"
runtime module("org.slf4j:jcl-over-slf4j:${slf4jVersion}")
runtime module("org.slf4j:jul-to-slf4j:${slf4jVersion}")
runtime module("org.slf4j:log4j-over-slf4j:${slf4jVersion}")
sourceArchives module("org.springframework.amqp:spring-amqp:${springAmqpVersion}:sources")
sourceArchives module("javax.servlet:servlet-api:${servletApiVersion}:sources")
}
sourceSets {
main { compileClasspath += configurations.providedCompile }
}
但是,最后一位是它獲得異常的地方。 我已經嘗試在運行時依賴項擴展它之后將servlet-api(由Tomcat提供)添加到配置中,或者只是將其作為編譯模塊放入,然后將其從運行時依賴項中刪除。
我嘗試了幾種不同的修改依賴關系的方法,最接近的結果是:
newRuntime = configurations.runtime.minus(configurations.providedCompile)
configurations.runtime = newRuntime
然而,最后一點將生成具有適當依賴關系的變量newRuntime ,但是當我嘗試將變量重新分配回運行時配置時,它會拋出“找不到屬性異常”
我在Gradle的錯誤跟蹤上發現了很多關於這個確切問題的討論: Gradle-784
然而,主要的導致是來自Spring,他使用Maven和他們的gradle構建,我不熟悉。
我在SO上找到的最有希望的鏈接,但不幸的是我無法讓這些例子也能正常工作: SO提供了Stack Overflow問題的注意事項:顯示最有希望的一行:
//Include provided for compilation
sourceSets.main.compileClasspath += configurations.provided
此行不會像其他嘗試一樣給出錯誤,但似乎提供的Compile(我提供的版本)依賴項實際上並未放在編譯類路徑上,因為嘗試編譯時會出現類路徑錯誤。
我不是100%關注你的消息,但提供的編譯僅允許'war'插件。
apply plugin: 'war'
dependencies {
// others go here
providedCompile "javax.servlet:javax.servlet-api:${servletVersion}"
}
在“war”步驟中,不包括servlet jar。
您已添加了providedCompile
配置,但您沒有對其執行任何操作。 因此它不會在任何類路徑上。 要將配置放在主編譯類路徑上,您可以執行以下操作:
sourceSets.main.compileClasspath += configurations.providedCompile
同樣,將它放在測試編譯類路徑上:
sourceSets.test.compileClasspath += configurations.providedCompile
您可以在'war'模塊中使用編譯范圍,在'war'模塊中使用providedCompile 。
War 提供的 Compile范圍將覆蓋jar的編譯范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.