Gradle尝试在依赖项代码中查找错误

Gradle尝试在依赖项代码中查找错误,gradle,Gradle,我尝试迁移到gradle我的项目,project-addon for webapp,所以我需要导入十几个这个webapp的lib进行开发。一些JAR包含冲突:相同的包、相同的类名、不同的类内容。重要的是,我没有在我的项目中显式地使用这些类 所以,我现在有了配置 ... def LIB_DIR = 'E:\\work\\source\\lib\\' def wnc101M040 = fileTree(dir: LIB_DIR + 'Windchill-10.1.M040/srclib', incl

我尝试迁移到gradle我的项目,project-addon for webapp,所以我需要导入十几个这个webapp的lib进行开发。一些JAR包含冲突:相同的包、相同的类名、不同的类内容。重要的是,我没有在我的项目中显式地使用这些类

所以,我现在有了配置

...
def LIB_DIR = 'E:\\work\\source\\lib\\'
def wnc101M040 = fileTree(dir: LIB_DIR + 'Windchill-10.1.M040/srclib', include: '**/*.jar')
...

dependencies {
    compile(wnc101M040) {transitive = false}
    ...
}
当我试图编译代码时。Gradle trows错误:

com\ptc\cat\gxt\client\widget\TabPanelWidget.java(com\ptc\cat\gxt\client\widget:TabPanelWidget.java):112: cannot find symbol
symbol  : method hasBeenSelected()
location: class com.extjs.gxt.ui.client.widget.TabItem
            if(!((TabItem) item).hasBeenSelected()) {
                                ^
com\ptc\cat\gxt\client\widget\TabPanelWidget.java(com\ptc\cat\gxt\client\widget:TabPanelWidget.java):113: cannot find symbol
symbol  : method setHasBeenSelected(boolean)
location: class com.extjs.gxt.ui.client.widget.TabItem
                ((TabItem)item).setHasBeenSelected(true);
                               ^
com\ptc\cat\gxt\client\widget\TabPanelWidget.java(com\ptc\cat\gxt\client\widget:TabPanelWidget.java):164: cannot find symbol
symbol  : method blockComponent(com.ptc.cat.gxt.client.widget.TabPanelWidget)
location: class com.extjs.gxt.ui.client.util.Util
            Util.blockComponent(this);
                ^

那么,为什么gradle在我的外部LIB中检查类呢?如何禁用此功能?提前谢谢

默认情况下,javac会尝试在jar中编译源代码。要防止这种情况,您必须设置正确的编译器选项。如果我没记错的话,它是:

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

或者,[-implicit:none]也可以工作。

您是说TabPanelWidget是外部代码吗?transitive=false对文件依赖项无效。Yep。有些库jar包含编译类,有些包含源代码。我的所有类都在其他包中。抱歉,但这没有效果。实际上它是options.compilerArgs。您应该得到一个警告,说明compilerArgs不存在。