Gradle多项目给出“找不到属性”sourceSets’在项目“错误

栏目: 编程工具 · 发布时间: 6年前

内容简介:所讨论的这个问题是有问题的,因为它假设项目:Libraries / MovedLibrary在当前项目之前被评估(不执行),可能不是这样.如果没有,另一个项目的源代码集将不会被配置. (甚至没有sourceSets属性,因为java-base插件还没有被应用)一般来说,最好不要涉及其他项目的项目模式,特别是如果他们不是当前项目的孩子.在项目A使用项目B的测试代码的情况下,推荐的解决方案是使项目B公开测试Jar(通过工件{}块),然后由项目A消耗.如果你想保持现状,你可以使用gradle.projectsE

我有一个很好的毕业生配置,建立一切都很好.但是,我的多项目构建项目之一源自于其他项目,所以我很乐意将其转移到另一个git repo并配置子模块来处理它.

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

这就是一切都停止工作的地方.当我尝试调用任何任务时,它总是结束

在项目’:库/ MovedProject’上找不到属性’sourceSets’.负责的是:

dependencies {
    ...
    if (noEclipseTask) {
        testCompile project(':Libraries/MovedLibrary').sourceSets.test.output
    }
}

我用于运行测试,其中我使用其他项目的类.如果我删除该行,则只有在到达使用MovedProject的项目的compileTestJava任务时,构建才会失败.如果我删除该行并调用gradle:库/ MovedLibrary:属性我可以看到:

...
sourceCompatibility: 1.7
sourceSets: [source set main, source set test]
standardOutputCapture: org.gradle.logging.internal.DefaultLoggingManager@1e263938
...

而gradle:图书馆/ MovedLibrary:构建正确.

目前我已经做了如下所有设置:

>目录:

> / SomeMainProject1

> / SomeMainProject2

> / SomeMainProject3

> /库

> / MovedProject

> build.gradle

>依赖

> project.gradle

> tasks.gradle

> / Builder

>依赖

> project.gradle

> tasks.gradle

> build.gradle

> settings.gradle

> settings.gradle

include Libraries/MovedProject,
        SomeMainProject1,
        SomeMainProject2,
        SomeMainProject3

> MovedProject的sourceSets在Libraries / MovedProject / project.gradle中定义:

sourceSets {
    main {
        java {
            srcDir 'src'
            srcDir 'resources'
        }
        resources { srcDir 'resources' }
    }
    test { java {
        srcDir 'test/unit'
    } }
}

使用sourceSets.test.output的依赖关系存储在Builder / dependancies.gradle中,并为需要MovedProject的每个项目设置运行测试:

project(':SomeMainProject1') {
    dependencies {
        ...

        if (noEclipseTask) {
            testCompile project(':Libraries/net.jsdpu').sourceSets.test.output
        }
    }
}

什么是最简单的方法来摆脱这个错误,并使当前目录结构的gradle构建项目?我想了解为什么毕业生看不到这个财产.

所讨论的这个问题是有问题的,因为它假设项目:Libraries / MovedLibrary在当前项目之前被评估(不执行),可能不是这样.如果没有,另一个项目的源代码集将不会被配置. (甚至没有sourceSets属性,因为java-base插件还没有被应用)

一般来说,最好不要涉及其他项目的项目模式,特别是如果他们不是当前项目的孩子.在项目A使用项目B的测试代码的情况下,推荐的解决方案是使项目B公开测试Jar(通过工件{}块),然后由项目A消耗.

如果你想保持现状,你可以使用gradle.projectsEvaluated {}或project.evaluationDependsOn()来解决问题.有关更多信息,请参阅 Gradle Build Language Reference .

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/15347364/gradle-multiproject-gives-could-not-find-property-sourcesets-on-project-erro


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Ruby Programming Language

The Ruby Programming Language

David Flanagan、Yukihiro Matsumoto / O'Reilly Media, Inc. / 2008 / USD 39.99

Ruby has gained some attention through the popular Ruby on Rails web development framework, but the language alone is worthy of more consideration -- a lot more. This book offers a definition explanat......一起来看看 《The Ruby Programming Language》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具