【问题标题】:Running Gradle root project task from subproject从子项目运行 Gradle 根项目任务
【发布时间】:2020-02-05 18:27:06
【问题描述】:

我面临以下问题。我有多模块 Gradle 项目。第一个模块是我的根项目,第二个模块是集成测试。

为了运行我的集成测试,需要先运行复制任务,以便将一些资产移动到项目根目录上的文件夹中。

我已经在我的根项目上定义了这样一个任务,当我尝试调用它时什么都不做(我尝试了几种不同的调用方式)。

由于这失败了,我继续在子项目本身上创建了以下任务:

task prepareTestAssets(type: Copy) {
    description = "Copies the needed jars from the root project output build dir"
    copy {
        from rootProject.configurations.compileClasspath
        into ("${rootProject.rootDir}/classes")
        rename { fileName -> fileName.replace '-internal', '' }
        rename 'ads-(.+).jar', 'ads.jar'
        fileMode 0755
    }

    copy {
        from ("${rootProject.buildDir}/libs")
        into ("${rootProject.rootDir}/classes")
        fileMode 0755
    }
}

我有另一个任务依赖它。我的目标是让它将根项目类以及在build/libs 下生成的 jar 复制到单个目录中(运行集成测试所需)。

我的问题是,当它运行时,它似乎找不到源并不断失败。

谁能帮我解决为什么我不能从子项目的上下文中复制根项目的资产

【问题讨论】:

  • @barfuin 这似乎工作正常。你能解释一下为什么复制关闭会搞砸吗?

标签: gradle gradlew


【解决方案1】:

看来您应该省略 copy{} 闭包并直接指定其内容。

为任务准备的配置以其他方式提供给闭包,因此任务认为它没有配置(它不知道寻找称为“副本”的闭包)。

【讨论】:

    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 2017-05-02
    相关资源
    最近更新 更多