我想创建依赖于少数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());
但它仍然不起作用。
答案 0 :(得分:1)
您通常会采取以下措施:
MyCustomTask
生活在自己的构建中(可能是buildSrc
)。MyCustomTask
项目将ant-jsch
声明为编译依赖项。taskdef
)并执行Ant任务。 (可能必须用project.ant.execute { ... }
包裹。)MyCustomTask
的构建在其模块上声明构建脚本依赖(在buildSrc
的情况下不需要)。传递依赖关系管理会自动引入ant-jsch
。完整Gradle分发中的customPlugin
示例是开始使用的好地方。 (只需声明compile
而不是testCompile
依赖项。)