2013-12-10 20 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