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

如何在Gradle多项目构建的子项目目录中执行命令?

江天宇
2023-03-14

我有一个gradle多项目构建,每个子项目都在单独的git存储库中。在根项目的build.gradle,我试图为所有子项目定义一个任务,它将为每个项目执行一些git命令。但是,任务的工作目录始终是根项目的工作目录。

如何根据当前执行任务的子项目更改workingDir?

subprojects {
    task someTask{
        def p1 = 'git rev-parse --abbrev-ref HEAD'.execute()
        p1.waitFor()
        println p1.exitValue()
    }
}

共有1个答案

越文康
2023-03-14

您可以使用Gradle Exec任务,该任务使用项目目录作为默认工作目录。该任务还可以选择显式更改工作目录(workingDir)。

subprojects {
    task someTask(type:Exec) {
        commandLine 'git', 'rev-parse', '--abbrev-ref', 'HEAD'
        doLast {
            logger.lifecycle('Exit value was ' + execResult.exitValue)
        }
    }
}

 类似资料:
  • 主要内容:多项目构建的结构,指定常规构建配置,项目指定配置和依赖关系,Gradle多项目构建的示例,子项目配置,参考可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。Gradle完美支持这种多项目构建的场景。 多项目构建的结构 这种构建有各种形状和大小,但它们都有一些共同的特点 - 在项目的根目录或主目录中都有一个文件。 根目录或主目录都有一个文件。 具有自己的构建文件的子目录(某些多项目构建可能会省略子项

  • 我希望在编译任何子项目之前先执行protobuf任务,因为我的子项目依赖于从protobuf任务生成的java文件。那么我怎样才能做到这一点呢?我不想在每个子项目中都有protobuf任务,相反,我只想在根项目中同时完成它,但在编译子项目之前。

  • 我有一个简单的gradle项目,我想建立在Docker容器内 我有一个多级码头建设。第一阶段只是从github克隆项目。第二阶段必须建立项目,所以我可以在最后阶段运行它。但是它失败了 命令<代码>。/gradlew build - stacktrace无法执行并失败,错误为: 和stacktraces: 为什么docker用户没有在工作目录下创建文件的权限,如何添加这些权限?简单的< code >

  • sbt子项目是否可以有自己的目录?或者只有根项目可以用。Scala帮助器文件为构建项目的目录?。下面是我目前的建筑结构。无法访问中定义的对象。 更新:sub-project-1/build.sbt中的以下sbt定义 由于以下错误而失败 Common在/my-project/projects/Common.scala中定义,没有问题。但是Localhost是在/my-project/sub-proj

  • 主要内容:Groovy插件,Groovy项目的默认项目布局本章介绍如何使用文件编译和执行Groovy项目。 Groovy插件 Gradle的Groovy插件扩展了Java插件,并为Groovy程序提供了任务。可以使用以下行来应用groovy插件。 完整的构建脚本文件如下。将以下代码复制到文件中。 可以使用以下命令来执行构建脚本。 Groovy项目的默认项目布局 Groovy插件假定Groovy项目有手动做过一定的设置。 包含Groovy源代码; 包含Gr

  • 主要内容:Java默认的项目布局,初始化任务执行,指定Java版本本章介绍如何使用Gradle构建文件来构建一个Java项目。 首先,我们必须向构建脚本中添加Java插件,因为它提供了编译Java源代码,运行单元测试,创建Javadoc和创建JAR文件的任务。 在文件中使用以下代码行。 怎么样,是不是很简单? Java默认的项目布局 每当添加一个插件到构建中,它会假设一个特定的Java项目设置(类似于Maven)。看看下面的目录结构。 目录包含Java源代码;