簡體   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