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

Gradle技术问询:如何添加Linux服务器文件系统中的Jar依赖

解决Gradle项目引用Linux服务器本地Jar的问题

核心逻辑

Gradle构建是在你的Windows开发机上执行的,根本访问不到Linux服务器的文件系统,所以构建阶段别碰这个Jar,只在Linux服务器运行时加载它才是可行的路子。

具体操作步骤

1. 调整Gradle构建脚本,避免编译依赖该Jar

在build.gradle(或build.gradle.kts)里,不要把这个Linux路径的Jar加到编译依赖里,只标记为运行时依赖,而且不让它参与打包:

// Groovy 写法
dependencies {
    // 项目本地lib目录下的Jar正常引入
    implementation fileTree(dir: 'lib', include: ['*.jar'])

    // 占位声明运行时依赖,不指定本地路径
    runtimeOnly files()
}

// 打包时排除这个Jar,避免冗余
jar {
    exclude 'xxx.jar'
}
// Kotlin 写法
dependencies {
    implementation(fileTree(mapOf("dir" to "lib", "include" to listOf("*.jar"))))
    runtimeOnly(files())
}

tasks.jar {
    exclude("xxx.jar")
}

2. Linux服务器上配置运行时类路径

部署到Linux后,通过启动脚本让JVM加载服务器上的Jar:

  • 方法一:修改启动脚本
    写一个shell启动脚本,把Jar的服务器本地路径加到类路径里:

    java -cp "你的应用.jar:/服务器上的Jar路径/xxx.jar" com.你的包名.主类名
    

    如果用Gradle的application插件生成了启动脚本,直接修改服务器上build/install/你的应用名/bin/你的应用名脚本,把Jar路径加到CLASSPATH变量中就行。

  • 方法二:启动时指定类路径参数
    启动命令里直接用系统属性指定:

    java -Djava.class.path="你的应用.jar:/服务器上的Jar路径/xxx.jar" com.你的包名.主类名
    

3. 本地开发的兼容处理

要是本地开发需要用这个Jar的类(不然编译报错),可以临时把Jar复制到Windows本地的lib目录,开发完再删掉;或者在build.gradle里加个仅本地生效的依赖:

// Groovy 写法
configurations {
    devOnly
}

dependencies {
    devOnly files('本地临时存放的Jar路径/xxx.jar')
}

// 让本地编译时能找到这个Jar
sourceSets.main.compileClasspath += configurations.devOnly

这样本地编译没问题,打包时不会带这个Jar,部署到Linux再用服务器路径加载。


内容的提问来源于stack exchange,提问作者Home of Creation

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 17:53:29