相关疑难解决方法(0)

Gradle multiproject提供"无法在项目中找到属性'sourceSets'错误

我有很好的gradle配置,建立一切都很好.但是我的多项目构建中的一个项目来自其他项目,我很乐意将它移动到另一个git repo并配置子模块来处理它.

首先,我将Project及其资源移至子文件夹Libraries/MovedProject.在改变了gradle配置中的一些行后,它工作正常.但后来我决定为这个项目编写一个新的build.gradle,并将所有配置从主项目移到那里.

这就是一切都停止工作的地方.当我试图调用任何任务时,它总是以Could not find property 'sourceSets' on project ':Libraries/MovedProject'.负责的是:

dependencies {
    ...
    if (noEclipseTask) {
        testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
    }
}
Run Code Online (Sandbox Code Playgroud)

我用它来运行我使用其他项目的类的测试.如果我删除该行,则只有当它到达使用MovedProject的项目的compileTestJava任务时,构建才会失败.如果我删除该行并打电话,gradle :Libraries/MovedLibrary:properties我可以看到:

...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@1e263938
...  
Run Code Online (Sandbox Code Playgroud)

同时gradle :Libraries/MovedLibrary:build建立正确.

目前我已经设置了以下所有内容:

  1. 目录:

    • / SomeMainProject1
    • / SomeMainProject2
    • / SomeMainProject3
    • /库
      • / MovedProject
        • 的build.gradle
        • dependencies.gradle
        • project.gradle
        • tasks.gradle
    • /生成器
      • dependencies.gradle
      • project.gradle
      • tasks.gradle
    • 的build.gradle
    • settings.gradle
  2. settings.gradle

    include Libraries/MovedProject,
            SomeMainProject1,
            SomeMainProject2,
            SomeMainProject3
    
    Run Code Online (Sandbox Code Playgroud)
  3. MovedProject的sourceSets定义Libraries/MovedProject/project.gradle如下:

    sourceSets {
        main { …
    Run Code Online (Sandbox Code Playgroud)

multi-project gradle

21
推荐指数
1
解决办法
4万
查看次数

标签 统计

gradle ×1

multi-project ×1