【问题标题】:Is it possible to use classes compiled by Gradle buildSrc in main Groovy project?是否可以在主 Groovy 项目中使用 Gradle buildSrc 编译的类?
【发布时间】:2013-04-02 13:51:42
【问题描述】:

由 buildSrc/build.gradle 编译的类在用于主 PROJECT 类时不会在运行时解析。

My Groovy project structure looks like this:
-PROJECT
    -buildSrc/
        -build.gradle
        -/src/main/groovy
            - com.company.global.test.report
    -src/test/groovy
    -build.gradle

有什么我可以添加到顶级 PROJECT/build.gradle 以允许它编译的类使用 buildSrc/build.gradle 编译的类吗?

【问题讨论】:

    标签: groovy build gradle


    【解决方案1】:

    buildSrc 是它自己的 build(不是项目),在主构建之前执行。它的唯一目的是使一些类(插件、任务、常规类)可用于主构建的构建脚本。因此,您可以将其称为“元构建”。

    从技术上讲,可以将buildSrc 的已编译类添加到主构建中项目的编译或运行时类路径中,但我不建议这样做。很可能有更好的方法来实现您的目标(但我不知道那些是什么)。

    【讨论】:

    • 彼得,谢谢你的解释。直到最近,我的 buildSrc 中唯一的类是主 build.gradle 使用的类;现在正在进行一些重构,即将几个相关的类放在一起。我会找到一种不同的方法来解决这个问题,而不是试图强迫 buildSrc 做一些它不打算做的事情。
    【解决方案2】:

    这是使用 Gradle 的方法2.12

    your_project/buildSrc/build.gradle

    task sourcesJar(type: Jar, dependsOn: classes) {
      classifier = 'sources'
      from sourceSets.main.allSource
    }
    
    // Thanks to this, IDE like IntelliJ will provide you with "Navigate to sources"
    artifacts {
      archives sourcesJar
    }
    

    your_project/build.gradle

    ext.buildSrcJars = fileTree("$rootDir/buildSrc/build/libs") { include("*.jar") exclude("*sources.jar")}
    
    // Works in every subproject
    dependencies {
        compile buildSrcJars
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      相关资源
      最近更新 更多