从子项目运行Gradle根项目任务

时间:2019-10-08 12:57:41

标签: gradle gradlew

我正面临以下问题。我有多模块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复制到一个目录中(运行集成测试需要)。

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

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

1 个答案:

答案 0 :(得分:1)

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

否则,将用于该任务的配置分配给该闭包,因此该任务认为它没有配置(它不知道要查找名为“ copy”的闭包)。