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

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

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


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

查看所有标签

猜你喜欢:

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

从零开始做运营

从零开始做运营

张亮 / 中信出版社 / 2015-11-1 / 49.00元

运营是什么?怎样做运营?产品和运营是什么关系?我是否适合从事互联网运营?为什么我做的运营活动收效甚微? 在互联网大热的今天,互联网运营成为一个越来越重要的岗位,事关网站、产品的发展与存亡。很多年轻人带着对互联网的热情投身到这个行业,却发现自己对这个行业所知甚少,对互联网运营更加陌生,甚至有一些有志于从事互联网运营的人,因为对运营缺乏了解而难以确定自己的职业发展方向。本书的出发点就在于此,它将......一起来看看 《从零开始做运营》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

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

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试