繁体   English   中英

使用任务进行Gradle绑定依赖关系配置

[英]Gradle binding dependency configuration with a task


我对Gradle来说是全新的。 首先,我试图为简单的控制台Java应用程序创建一个构建脚本,而不使用java插件。 我的代码中只有两个来自maven存储库的依赖项。 因此,我的构建包含一个任务,它扩展了JavaCompile,我在其中指定了classpath,destination,ect。
我的项目不适用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'
}

据我所知,之后我必须将这些配置与我的编译动作绑定,但我无法弄清楚如何。 有人能指出这个吗? 任何帮助将非常感谢)

PS我已经阅读了这个In Gradle,将任务与依赖配置相关联 ,并且提到了sourcesets。 那么,我可以创建sourceset myThing,并为我创建配置任务吗? 这可以不用java插件吗?

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

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

创建编译任务时,可以使用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任务,它依赖于resolveCompileDependency。
希望这会对某人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM