gradle - 如何让 IntelliJ 识别 gradle 生成的源目录?

标签 gradle generated

所以我有一个 XJC javaExec,它像陀螺一样旋转,但尽管标记了 generated-src/java,但 IntelliJ 无法识别生成的输出。像这样。我需要调整idea插件吗?

注意:插件本身是从根 build.gradle 加载到 subProjects 中的。 .

XJC项目:

description = "Generates sources and compiles them into a Jar for $project"

configurations { xjc }
dependencies {
    xjc 'org.glassfish.jaxb:jaxb-xjc:2.2.11'
    xjc 'org.glassfish.jaxb:jaxb-runtime:2.2.11'
}

task xjc (type:JavaExec) {

    doFirst{
        File generatedSrcDir = file("$buildDir/generated-src/java")
        if (!generatedSrcDir.exists()) {
            generatedSrcDir.mkdirs()
        }
    }

    main = "com.sun.tools.xjc.XJCFacade"
    classpath configurations.xjc

    def argsList = [
            "-mark-generated",
            "-no-header",
            "-verbose", // or -quiet or nothing for default.
            "-target", "2.1",
            "-encoding", "UTF-8",
            "-d", "$buildDir/generated-src/java",
            "-catalog","$projectDir/src/main/resources/commons-gradle.cat",
            file("$projectDir/src/main/resources/v1/") ]

    args argsList
    inputs.files files(file("$projectDir/src/main/resources/v1/"))
    outputs.files files(file("$buildDir/generated-src/java"),file("$buildDir/classes"))

}

compileJava {
    dependsOn xjc
    source "${buildDir}/generated-src"
}

在依赖于这个的项目中,我只有:

compile project(":path:to:schemas:the-test-schema")

我试过了:

idea {
    module {

        def buildDir = file("$buildDir")
        def generatedDir = file("$buildDir/generated-src")
        def listOfDirs = []

        buildDir.eachDir { file ->
            if (file.name != buildDir.name && file.name != generatedDir.name)
            listOfDirs.add(file)
        }

        excludeDirs = listOfDirs.toArray()

        generatedSourceDirs += file("$buildDir/generated-src/java")
        scopes.COMPILE.plus += [ configurations.xjc ]
    }
}

最佳答案

我将指出 Daniel Dekany 的解决方案,from a Gradle discussion thread actually linking to this question .报价:

apply plugin: "idea"
...
sourceSets.main.java.srcDir new File(buildDir, 'generated/javacc')
idea {
    module {
        // Marks the already(!) added srcDir as "generated"
        generatedSourceDirs += file('build/generated/javacc')
    }
}

对我来说效果很好。

关于gradle - 如何让 IntelliJ 识别 gradle 生成的源目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36749015/

相关文章:

java - Android Studio 和 JDK17

json - Android Studio Gradle错误:缺少project_info对象

android - 在 Gradle 中为 Android 中的库项目构建变体

多项目上的 gradle sourceSets

sql - 在Gradle中使用Groovy执行SQL文件

mysql - 将 MySQL 表中的生成列更改为非生成列

pdf - 以编程方式启用 Adob​​e PDF 使用权限

SQL : Error when adding column generated from other columns (postgresql 11)

javascript - 由 javascript 创建的 HTML5 拖放元素 :