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

时间:2013-05-14 10:27:48

标签: groovy gradle

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

但它仍然不起作用。

1 个答案:

答案 0 :(得分:1)

您通常会采取以下措施:

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

完整Gradle分发中的customPlugin示例是开始使用的好地方。 (只需声明compile而不是testCompile依赖项。)