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を宣言します (の場合は必要ありません)。推移的な依存関係管理は、自動的にそれをもたらします。buildSrcant-jsch

customPlugin完全な Gradle ディストリビューションのサンプルは、開始するのに適した場所です。(依存関係のcompile代わりに a を宣言するだけです。)testCompile

于 2013-05-14T21:44:51.153 に答える