亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 gradle 管理的所有依賴項編譯一個 groovy 腳本,然后通過命令行將其作為獨立應用程序

使用 gradle 管理的所有依賴項編譯一個 groovy 腳本,然后通過命令行將其作為獨立應用程序

喵喵時光機 2022-07-06 09:48:25
我有一個帶有單個 java 庫依賴項的簡單 groovy 腳本:package com.mrhacki.myAppimport me.tongfei.progressbar.ProgressBar    class Loading {                static void main(String[] arguments) {                    List list = ["file1", "file2", "file3"]                    for (String x : ProgressBar.wrap(list, "TaskName")) {                println(x)            }                }    }我正在使用 gradle 來管理項目的依賴項。該項目的 gradle 配置也非常簡單:plugins {    id 'groovy'}group 'com.mrhacki'version '1.0-SNAPSHOT'repositories {    mavenCentral()}dependencies {    compile 'org.codehaus.groovy:groovy-all:2.3.11'    compile 'me.tongfei:progressbar:0.7.2'}  如果我從 Intellij IDE 運行腳本,腳本會按預期執行。我現在想做的是將具有這種依賴關系的腳本編譯成一個 .jar 文件,這樣我就可以這樣分發它,并從任何文件系統路徑運行應用程序,因為腳本邏輯將依賴于執行被調用。我已經嘗試了一些 gradle fat jars 示例,但沒有一個對我有用,因為 .jar 文件Could not find or load main class Loading在我嘗試運行時不斷拋出。如果有人愿意提供提示或展示一個 gradle 任務的示例,該任務將執行符合我描述的需求的構建,我將非常感激。我也知道帶有@Grab注釋的 groovy 模塊 Grape,但我將其作為最后的手段,因為我不希望用戶等待依賴項下載,并希望將它們與應用程序捆綁在一起。我在項目中使用 groovy 2.5.6 和 gradle 4.10
查看完整描述

1 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

您可以使用Task簡單地自己創建fat-jar,無需任何額外的插件。jar對于像您這樣的簡單/小型項目,它應該很簡單:


jar {

    manifest {

        // required attribute "Main-Class"

        attributes "Main-Class": "com.mrhacki.myApp.Loading"

    }


    // collect (and unzip) dependencies into the fat jar

    from {

        configurations.compile.collect { 

            it.isDirectory() ? it : zipTree(it) 

        }

    }

}

編輯:請考慮其他意見:如果您有多個外部庫,您可能對此解決方案有疑問,因此在這種情況下,您應該使用“影子”插件尋求解決方案。


查看完整回答
反對 回復 2022-07-06
  • 1 回答
  • 0 關注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號