我对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'
}
据我所知,之后我必须将这些配置与我的编译操作绑定,但我无法弄清楚如何。有人能指出这个吗?
任何帮助将非常感谢)
附:我已经阅读了这个In Gradle, associating task with a dependency configuration,并且提到了源集。那么,我可以创建sourceset myThing,并为我创建配置任务吗?如果没有java插件,这会工作吗?
P.P.S.我想在没有插件的情况下完成这个简单的任务只是为了学习Gradle,它是基本的工具:)
答案 0 :(得分:0)
首先使用exec任务类型创建编译任务,请参阅DSL refreence for Exec。
创建编译任务时,可以使用getAsPath()获取对配置的引用,请参阅API doc for FileCollection
configurations.myCompile.getAsPath()
但严重的是,我做建议您为此应用java插件。
如果您觉得需要快速入门课程,请尝试this video。
答案 1 :(得分:0)
最终,我使用此代码编译没有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。希望这会对某人有所帮助。