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

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

内容简介:所讨论的这个问题是有问题的,因为它假设项目: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


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

查看所有标签

猜你喜欢:

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

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战

钟华 / 机械工业出版社 / 2017-4-1 / 79

在当今整个中国社会都处于互联网转型的浪潮中,不管是政府职能单位、业务规模庞大的央企,还是面临最激烈竞争的零售行业都处于一个重要的转折点,这个转折对企业业务模式带来了冲击,当然也给企业的信息中心部门带来了挑战:如何构建IT系统架构更好地满足互联网时代下企业业务发展的需要。阿里巴巴的共享服务理念以及企业级互联网架构建设的思路,给这些企业带来了不少新的思路,这也是我最终决定写这本书的最主要原因。本书从阿......一起来看看 《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

在线XML、JSON转换工具