[英]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.