【问题标题】:gradle sourceSets on mutli-project多项目上的 gradle sourceSets
【发布时间】:2017-02-23 16:08:00
【问题描述】:

我的gradle多项目布局是这样的:

rootProject
  |-- project1
  |
  |-- project2
  |
  |-- src
  |    |-- main
  |    |    |-- groovy
  |    |    `-- resources
  |    |-- test
  |    |    |-- groovy
  |    |    `-- resources
  |    `-- sanity
  |         |-- groovy
  |         `-- resources
  |
  |---- settings.gradle
  `---- build.gradle

project1 和 project2 在 build.gradle 中配置(在 rootProject 中)。
我想将 project1 和 project2 testClassDir 更改为 sanity

我的 build.gradle 是这样的:

subprojects{
    apply plugin: "groovy"

    sourceSets {
        sanity {
           groovy.srcDir "src/sanity/groovy"
           resources.srcDir "src/sanity/resources"
        }
    }

    dependencies {
        sanityCompile sourceSets.main.output
        sanityCompile sourceSets.test.output

        sanityCompile configurations.compile
        sanityCompile configurations.testCompile

        sanityRuntime configurations.runtime
        sanityRuntime configurations.testRuntime
   }
   runTest {
        testClassesDir = sourceSets.sanity.output.classesDir
        classpath = sourceSets.sanity.runtimeClasspath
    }
}

project('project1) {
}

我已经关注了这个Blog,我试图理解为什么配置在多项目上不起​​作用。

【问题讨论】:

  • 您可能对this代码感兴趣

标签: gradle source-sets


【解决方案1】:

我找到了解决方案。 我需要将根项目中的 sourceSets 定义到新的测试文件夹中。 在我需要的子项目中,将测试目录设置为 rootProject。 新的build.gradle

// On root project
sourceSets {
    sanity {
       groovy.srcDir "src/sanity/groovy"
       resources.srcDir "src/sanity/resources"
    }
}

dependencies {
    sanityCompile sourceSets.main.output
    sanityCompile sourceSets.test.output

    sanityCompile configurations.compile
    sanityCompile configurations.testCompile

    sanityRuntime configurations.runtime
    sanityRuntime configurations.testRuntime
}

subprojects {
   apply plugin: "groovy"    

   runTest {
        // Redirect the class dir to rootProject 
        testClassesDir = rootProject.sourceSets.sanity.output.classesDir
        classpath = rootProject.sourceSets.sanity.runtimeClasspath
    }
}

project('project1) {
}

project('project2) {
}

【讨论】:

  • Royg,你能澄清一下你自己的解决方案吗? rootProject 是一个实际的 Gradle 变量吗?其次,您将 classpath 重置为等于 ....sanity.classpath。你不是要重置整个项目的类路径吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 2017-05-26
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
相关资源
最近更新 更多