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