当前位置: 首页 > 知识库问答 >
问题:

Intellij无法解析具有多个源集的Gradle项目中的符号

阙阳夏
2023-03-14

我正在从事一个Gradle项目,该项目使用多个源集来构建不同的战争。

从命令行一切正常。格拉德正确地构建了战争。但是在IntelliJ中它说对于每个*。src/k下的java文件无法解析来自src/main的依赖关系。

我试图通过使用idea gradle插件将目录添加为SourceDir来修复它,但不幸的是,这没有起作用。

plugins {
    id 'org.gretty' version '2.2.0'
    id 'war'
    id 'idea'
}

configurations {
    kCompile.extendsFrom compile
    kRuntime.extendsFrom runtime
}

sourceSets {
    main {}        
    k {
        java {
            compileClasspath += main.output
            runtimeClasspath += main.output   
            srcDirs = ['src/main/java', 'src/k/java/']
        }

        resources { 
            compileClasspath += main.output
            runtimeClasspath += main.output
            srcDirs = ['src/main/resources', 'src/k/resources']
        }
        output.resourcesDir = 'build/resources/main'
        output.classesDir = 'build/classes/java/main'
    }  
}

idea {
    module {
        sourceDirs += file('src/main/java')
        sourceDirs += file('src/k/java')
        downloadJavadoc = true
        downloadSources = false
    }    
}

repositories {
    mavenCentral()
    jcenter()
}

gretty {
    servletContainer = 'tomcat85'
}

dependencies {
    ...
}

task kWar(type: War) {
    appendix = "k"
    from sourceSets.k.output
}


farm {
    webapp "build/libs/App-k.war", contextPath: '/k'
}

project.afterEvaluate {
    farmRunWar.dependsOn kWar
    farmRunWar.shouldRunAfter kWar

}

共有2个答案

邵沛
2023-03-14

我找到了一个修复方法,我必须通过文件将main的依赖项手动添加到Intellij中的k

颛孙嘉石
2023-03-14

试试这个:

 k {
    java {
        srcDirs = ['src/main/java', 'src/k/java']
    }

    resources {         
        srcDirs = ['src/main/resources', 'src/k/resources']
    }
    compileClasspath += main.output
    runtimeClasspath += main.output   

    output.resourcesDir = 'build/resources/main'
    output.classesDir = 'build/classes/java/main'
   }  

另一种变体

 k {
    java {
        srcDirs 'src/main/java'
        srcDirs 'src/k/java'
    }

    resources {         
        srcDirs 'src/main/resources'
        srcDirs 'src/k/resources'
    }
    compileClasspath += main.output
    runtimeClasspath += main.output   

    output.resourcesDir = 'build/resources/main'
    output.classesDir = 'build/classes/java/main'
   }  
 类似资料:
  • 作为红色和警告“无法解决符号‘谷歌’”。知道怎么修好它吗? 我尝试了1)删除并在IntelliJ IDEA中重新创建项目,以及2)从手动创建的Gradle配置文件中重新导入项目,但没有效果。

  • 这次我的头撞到墙上了。 正在尝试在工作中打开克隆的git SBT项目。它是一个结合了Java和Scala的Play项目,使用Scala 2.11。1,SBT 0.13。6,玩2.5。 我使用IntelliJ从克隆的回购中导入项目,使用JDK 1.8,检查所有下载和SBT复选框,然后运行SBT刷新或从SBT shell重新加载。 完成此操作后,所有SBT和Play代码都将在两个版本上生成。sbt和插

  • 我有以下项目结构: 我试图遵循Gradle多项目构建的最佳实践,因此我在单个build.Gradle文件中描述了整个构建过程。 “rootProject”只是一个没有任何代码的根项目,它的唯一目的是为它的子项目“lib”和“test-project”提供一个单独的build.gradle。 “Test-Project”是使用“lib”作为编译依赖项springboot项目(微服务)。 我的通用Bu

  • 问题是gradle找不到依赖项的jar,但gradle找错了地方。Gradle一直在错误的目录(谷歌和Android支持libary的目录)中搜索文件.... 在以下位置搜索:文件:/d://programme/androis-sdks/extras/android/m2repository/org/springframework/android/spring-android-rest-templ

  • 正如您所看到的,所有其他selenium库都可以毫无问题地导入,但是支持库根本不想工作。我该怎么办?