Gradle DSL - Eclipse 等效于 IDEA 模块 属性

Gradle DSL - Eclipse Equivalent for IDEA Module Property

当地时间不错,

我正在更新旧版 (4.8.1) Gradle 为一个大型的多模块项目构建文件。我们使用一个 intellij.gradle 文件,其中包含以下行(用注释标记):

idea {
    module {
        inheritOutputDirs = true // <-- HOW DO I DO THIS
        downloadJavadoc = true
        downloadSources = true
    }

    workspace.iws.withXml { provider ->
        def node = provider.asNode()
        def dynamicClasspath = node.component.find { it."@name" == "dynamic.classpath" }
        if (dynamicClasspath != null) {
            dynamicClasspath."@value" = "true"
    }
}

来自 4.8.1 DSL 文档:

If true, output directories for this module will be located below the output directory for the project; otherwise, they will be set to the directories specified by IdeaModule.getOutputDir() and IdeaModule.getTestOutputDir().

关于什么是 Eclipse DSL 等同于 inheritOutputDirs 的任何想法?这应该使用 eclipseClasspath API 来处理吗?现在一切都在构建中,但是 Eclipse Java 构建器正在标记一些东西。

参考文献:

通常这会通过 sourceSets 获得,但我看不到你的项目是什么样子...

如果您的子项目使用 Gradle 将源代码生成到 /build/cxf/generated-sources 目录中,那么您可以通过 Gradle DSL 告诉 Eclipse 将其包含为源文件夹,如下所示:

plugins { id 'eclipse' }

eclipse.classpath.file.whenMerged {
  // this is the brute-force approach; there is likely a better way to add a source folder
  entries << new org.gradle.plugins.ide.eclipse.model.SourceFolder('build/cxf/generated-sources', null)
}

一旦这是 运行(通过 gradle eclipseClasspath),您应该会在 Package Explorer 或 Project Explorer 中的项目节点下看到一个 build/cxf/generated-sources 文件夹。有点像这样:

注意:这是未经测试的,因为我没有可使用的示例项目。

此处讨论较多:How to add gradle generated source folder to Eclipse project?