gpt4 book ai didi

groovy - 在自定义 gradle 任务中以编程方式下载依赖项

转载 作者:行者123 更新时间:2023-12-03 05:18:16 26 4
gpt4 key购买 nike

我想创建依赖于少数 Maven 库的任务。是否可以从 groovy 代码中下载这些库?我想要做的是把这段代码

configurations {
sshexecAntTask
}

repositories {
mavenCentral()
}

dependencies {
sshexecAntTask 'org.apache.ant:ant-jsch:1.7.0'
}

我以这种方式使用:
ant.taskdef(name: 'sshexec', classname: 'org.apache.tools.ant.taskdefs.optional.ssh.SSHExec', classpath: project.configurations.sshexecAntTask.asPath)
ant.sshexec(host: host, username: username, password: password, command: command, trust: 'true', failonerror: 'true')

进入我的 DefaultTask类(class)。是否可以?
它应该类似于:
class MyCustomTask extends DefaultTask {

public MyCustomTask() {
super()
// set and download dependencies here
}
}

[编辑]

我发现我可以这样做:
project.getRepositories().mavenLocal()
project.getConfigurations().create('sshexecAntTask')
project.getDependencies().add('sshexecAntTask', 'org.apache.ant:ant-jsch:1.7.0')
project.getConfigurations().getByName('sshexecAntTask').resolve()
println('project.configurations.sshexecAntTask.asPath: '+project.getConfigurations().getByName('sshexecAntTask').getAsPath());

但它仍然不起作用。

最佳答案

您通常会按照以下方式做一些事情:

  • MyCustomTask存在于它自己的构建中(可能是 buildSrc )。
  • MyCustomTask项目申报ant-jsch作为编译依赖。
  • 任务的操作(不是构造函数)定义(taskdef)并执行 Ant 任务。 (可能必须用 project.ant.execute { ... } 包裹。)
  • 希望使用 MyCustomTask 的构建声明对其模块的构建脚本依赖项(在 buildSrc 的情况下不是必需的)。传递依赖管理自动引入 ant-jsch随之而来。
  • customPlugin完整的 Gradle 发行版中的示例是一个很好的起点。 (只需声明 compile 而不是 testCompile 依赖项。)

    关于groovy - 在自定义 gradle 任务中以编程方式下载依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16540782/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com