提问者:小点点

Gradle绑定依赖配置与任务



我对Gradle完全陌生。首先,我尝试为简单的控制台Java应用程序创建一个构建脚本,而不使用Java插件。maven repository中的代码中只有两个依赖项。因此,我的构建包含一个任务,它扩展了JavaCompile,我在其中指定了类路径、目标等
我的项目不应用java插件,因此我需要自己创建依赖项配置,如下所示:

    configurations {
      myCompile {
      desciprtion = 'my own compile dependency configuration'
      transitive = true
      }
 }

然后我可以将依赖项绑定到此配置:

dependencies {
myCompile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.7'
myCompile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.7'
}

据我所知,在那之后我必须将那些配置与我的编译操作绑定,但我无法弄清楚如何。有人可以向我指出这一点吗?任何帮助都将非常感谢)

P. S.我已经阅读了这个在Gradle中,将任务与依赖配置相关联,并且提到了源代码集。所以,我可以创建源代码集myThing,并且将为我创建具有配置的任务?这在没有java插件的情况下可以工作吗?

P. S.我想在没有插件的情况下实现这个简单的任务只是为了学习Gradle,它是基本工具:)


共2个答案

匿名用户

首先使用exec任务类型创建编译任务,请参阅DSL refreence for exec。

创建编译任务时,您可以使用getAsPath()获取对配置的引用,请参阅FileCollection的API文档

configurations.myCompile.getAsPath()

但说真的,我建议您为此应用java插件。

如果你觉得需要一个快速的初学者课程,试试这个视频。

匿名用户

最后,我使用这段代码编译了没有java插件的项目:

task resolveCompileDependency(type: Copy) {
    //download libraries specified in dependency configuration
    def lib_files = configurations.myCompile.resolve()
    //print names of downloaded files and copy to build directory (optional)
    lib_files.each {File file ->
        println file.name
    }
    from lib_files
    into 'build/classes'
    outputs.files(lib_files)
}

而编译任务只是普通的JavaCompile任务,它依赖于解析编译依赖。
希望这会对某人有所帮助。

相关问题