簡體   English   中英

使用 settings.gradle 中的依賴項創建一個 Jar 文件

[英]Create a Jar file with dependencies from settings.gradle

我想創建一個 jar 文件,可以通過java -cp.\TrendAnalyzer.jar trend_detect.Main等命令使用。 但是,我找不到從 settings.gradle 創建 jar 文件的方法,而不是 build.gradle。我如何創建一個 jar 文件,它具有來自 settings.gradle 的依賴項,其中包含include等信息。

將 com.github.johnrengelman.shadow 插件添加到主模塊 build.jar

plugins {
    // *snip*
    id 'com.github.johnrengelman.shadow' version '7.1.2'
}

application {
    // Define the main class for the application.
    mainClass = 'jaso92559.app.App'
}

jar {
    manifest {
        // Define the main class for the application.
        attributes "Main-Class": "jaso92559.app.App"
    }
}

在 settings.gradle 所在的路徑上運行./gradle shadowJar命令。 在app\build\libs中生成了app-all.jar文件,可以運行java -jar app-all.jar

根據https://github.com/yukihane/stackoverflow-qa/tree/main/jaso92559

要從 settings.gradle 創建一個 jar 文件,您可以使用 Gradle 中的jar任務。此任務允許您將 package 編譯后的代碼和任何依賴項放入 jar 文件中,然后可以使用145c489命令選項-35c4888執行該文件.

使用settings.gradle中的jar任務創建一個jar文件:

// settings.gradle
include ':trend_detect'

// build.gradle (in the trend_detect module)
apply plugin: 'java'

jar {
    manifest {
        attributes 'Main-Class': 'trend_detect.Main'
    }
    from {
        configurations.compile.collect { 

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

settings.gradle 中的include語句指定 trend_detect 模塊應包含在構建中。

trend_detect模塊的build.gradle文件中,定義了 jar 任務以創建一個 jar 文件,其中包含指定主要 class (trend_detect.Main) 的MANIFEST.MF文件。 jar任務中的from語句指定 jar 文件應包含編譯配置中的所有已編譯代碼和依賴項。

創建 jar 文件后,您可以使用帶有-cp選項的java命令運行它,如下所示:

java -cp .\TrendAnalyzer.jar trend_detect.Main

這將使用 jar 文件中包含的編譯代碼和依賴項執行trend_detect.Main class 中的main()方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM