0

我想创建依赖于少数 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 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());

但它仍然不起作用。

4

1 回答 1

1

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

  • MyCustomTask生活在自己的构建中(可能buildSrc)。
  • MyCustomTask项目声明ant-jsch为编译依赖项。
  • 任务的操作(不是构造函数)定义 ( taskdef) 并执行 Ant 任务。(可能必须用 包裹project.ant.execute { ... }。)
  • 希望使用的构建在其模块上MyCustomTask声明构建脚本依赖项(在 的情况下不是必需的buildSrc)。传递依赖管理会自动引入ant-jsch它。

完整的 Gradle 发行版中的customPlugin示例是一个很好的起点。(只需声明 acompile而不是testCompile依赖项。)

于 2013-05-14T21:44:51.153 回答