当前位置: 首页 > 知识库问答 >
问题:

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

毕宇
2023-03-14

我面临以下问题。我有一个多模块的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个答案

楚硕
2023-03-14

您似乎应该省略复制{}闭包,直接指定其内容。

打算用于任务的配置以其他方式提供给闭包,因此任务认为它没有配置(它不知道要寻找称为“复制”的闭包)。

 类似资料:
  • 我有一个这样的多项目构建 现在,在项目中,我已经为所有子项目声明了一个任务,如下所示: 当我运行时,我得到的输出类似于以下内容(其他内容): 现在,我尝试像这样为简单项目运行该任务 我得到的输出是: 失败:构建失败,但有一个异常。 > 哪里出错了:在项目中找不到任务你好:例子:简单项目。一些候选人是:帮助。 尝试:运行gradle任务以获取可用任务的列表。使用--stack跟踪选项来获取堆栈跟踪。

  • 在我的多项目中,我正在根项目上运行测试任务,并期望它将在子项目上运行测试任务并生成一个测试报告。我观察到的是,它从来没有在子项目上运行测试任务。我的期望是不正确的吗?“我需要在我的gradle脚本中进行任何特殊配置吗? 请注意,我的根项目中没有测试。

  • 我有以下多模块项目结构。 当我为/builder子项目运行任务时,我希望所有子项目都会执行任务(对于

  • 是否可以设置子gradle项目的父项目。 在我的例子中,所有父子项目都位于文件层次结构中的同一级别。例如 > 代码 > /父项目 构建。格拉德尔 /child项目1 构建。格拉德尔 /子项目2 构建。格拉德尔 这里,项目1依赖于项目2,所以我将它们称为 也在我的设置中。gradle文件,我有 有了它,我可以从父项目文件夹运行任务,但单个任务不会从子项目运行。

  • 我正在使用以下项目结构Project ---子项目1 ---子项目2 ---子项目3 |build.gradle |设置。格拉德尔 子项目2取决于子项目1 子项目3取决于子项目2 对于所有子项目,我需要有任务“构建”,这将是每个项目的自定义任务。但在“构建”之前必须执行一些初始化任务(对于所有子项目都相同)。问题是,这个初始化任务必须在构建期间执行一次,而且只能执行一次,无论我在构建什么-根项目或

  • 如果我有一个像这样的gradle多项目 每个项目都有一个任务'foo',我可以在root项目上调用它 它还可以为子项目执行 但如果我从子项目调用task“:foo” 仅执行根项目上的任务 但不是子项目上的“foo”任务。 在子项目中,是否有方法对所有项目调用“foo”?我这样问是因为我使用的是gradle eclipse插件,在那里我只能访问子项目,即我在eclipse中看到的项目。 顺便说一句: