You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于settings.gradle构建含依赖的可运行Jar包?

实现方案

先说明白:settings.gradle主要用来定义项目的模块结构(比如用include添加子模块),它本身没法直接写Jar的构建逻辑——构建任务的配置还是得靠build.gradle,但你可以通过settings.gradle统一给所有子模块注入Jar构建的规则,相当于从settings层面管理Jar的生成。

具体步骤

1. 确认你的settings.gradle模块配置

假设你的settings.gradle已经有模块声明,比如:

rootProject.name = 'TrendAnalyzer'
include ':core' // 替换成你实际的子模块名

2. 在settings.gradle中统一注入Jar构建配置

在settings.gradle的末尾添加以下代码,自动给所有子模块(或指定模块)配置Jar生成规则:

// 在settings.gradle最后添加
gradle.settingsEvaluated {
    subprojects { subproject ->
        subproject.plugins.apply('java')
        
        subproject.tasks.named('jar') { jarTask ->
            // 设置主类路径,对应你要运行的trend_detect.Main
            manifest {
                attributes 'Main-Class': 'trend_detect.Main'
            }
            // 若需要将所有依赖打包进Jar(生成可执行Jar)则保留这段;不需要则删除
            from {
                subproject.configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
            }
            // 设置输出的Jar文件名,即你需要的TrendAnalyzer.jar
            archiveFileName.set('TrendAnalyzer.jar')
            // 可选:指定Jar输出目录,默认在子模块的build/libs下,这里统一到根项目的build/libs
            destinationDirectory.set(file("$rootProject.buildDir/libs"))
        }
    }
}

3. 生成Jar并测试运行

  • 执行Gradle命令构建Jar:
# Linux/Mac环境
./gradlew jar
# Windows环境
gradlew jar
  • 运行生成的Jar:
java -cp ./build/libs/TrendAnalyzer.jar trend_detect.Main

额外说明

  • 若仅需给特定模块配置Jar,把subprojects替换为project(':core')(将:core改为你的目标模块名)即可。
  • 若不需要打包依赖进Jar,仅保留manifest部分配置即可,运行时需将依赖Jar也加入classpath。

内容的提问来源于stack exchange,提问作者Lamron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:25:22