[英]Gradle compiling .java inside jar files?
我遇到一个奇怪的情况,Gradle似乎正在尝试编译位于我设置为依赖项的jar文件内部的“ .java”文件。 我做这样的事情:
dependencies {
testCompile fileTree(dir: './libs', include: ['*JarResources/Java/*.jar'])
testCompile group: 'junit', name: 'junit', version: '4.11'
}
...而且我有大量的jar依赖项列表。 当我尝试运行测试时,它无法在编译阶段失败,在该阶段无法找到隐藏在jar文件中的Java文件的符号。 其中一些jar依赖项打包在一起,其源代码位于相应的.class旁边。 我尝试在源集中使用包含过滤器,但无济于事。
sourceSets {
main {
java {
exclude 'com/mypkg/other/**'
}
}
test {
java {
include 'com/mypkg/test/**'
}
}
}
我可以使用IntelliJ 13的gradle-aware make来运行测试(没有问题(在这里我右键单击单元测试并运行它们)),因为它足够聪明,可以在不将文件传递给Javac的情况下构建依赖关系类路径, build.gradle从命令行失败。 这是Gradle在Jar文件中找到依赖项时自动将依赖项传递给javac的已知问题吗?
您将看到Java编译器的默认行为(源路径默认为类路径,源路径上的文件将被编译)。 一种解决方法是将源路径显式设置为“ nothing”:
tasks.withType(JavaCompile) {
options.compilerArgs += ["-sourcepath", "''"]
}
PS:并不是所有的工具/ IDE都可以处理Jars中的源,因此通常最好将它们放在单独的源Jar中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.