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