2013-12-10 19 views
0

我最近在使用Gradle構建的Web應用程序中包含了ActiveMQ 5.9.0。Gradle在構建期間在activemq-all-5.9.0依賴關係jar中編譯java文件

compile "org.apache.activemq:activemq-all:5.9.0" 

的問題是,由於的ActiveMQ,全5.9.0.jar配備了兩個類文件,並在它的源java文件,當我建立使用下面的命令war文件,搖籃嘗試編譯activemq jar文件中的java文件並將它們包含在war中。

gradle clean war 

在部署期間,由於那些編譯activemq類,我的應用程序無法啓動。手動從/ WEB-INF/classes中移除它們可以使應用程序正常工作。我正在尋找自動化的方式來排除這些java類成爲我的戰爭文件。請幫忙嗎?

回答

0

您看到的是Java編譯器的默認行爲。明確設置的源路徑「無中生有」應解決的問題:

tasks.withType(JavaCompile) { 
    options.compilerArgs += ["-sourcepath", "''"] 
} 

由於這個問題已經被問過,你也應該能夠找到對堆棧溢出或Gradle Forums現有的答案。

+0

謝謝彼得。我嘗試了你的建議,但恐怕問題仍然存在。我沒有檢查Gradle論壇,發現類似的答案,但我不確定我錯過了什麼。恐怕我對gradle build很陌生。 ' 應用插件: '的java' 應用插件: '戰爭' 應用插件: '常規' tasks.withType(JavaCompile){options.compilerArgs + = [ 「-sourcepath」, 「 ''」]} //compileJava.options.compilerArgs = [ 「-implicit:無」] 庫{mavenCentral()} 依賴性{ 編譯 「org.apache.activemq:ActiveMQ的全:5.9.0」 ...... }' – MFIhsan

+0

你的建議確實奏效。在Gradle論壇上,我還發現了另一種方法:compileJava.options.compilerArgs = [「-implicit:none」] – MFIhsan