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

如何从Jar包内的*.toml文件读取Version Catalog?

Gradle读取Jar包内版本目录文件的解决方案

直接读取Jar内的版本目录文件

Gradle本身支持直接从符合规范的Jar包中读取版本目录文件,无需手动提取。只要你的Jar包是按Maven/Gradle规范打包,内部包含版本目录文件(默认路径为gradle/libs.versions.toml),原有的配置逻辑其实已经可以工作——如果读取失败,大概率是Jar内的文件路径不符合默认约定,此时只需指定文件在Jar内的具体路径即可:

修改settings.gradle配置:

dependencyResolutionManagement {
    repositories {
        mavenLocal()
    }
    versionCatalogs {
        create("libs") {
            from("com.test:version-catalog:1.0.1-SNAPSHOT") {
                // 替换为Jar内实际的toml文件路径
                artifactUrl = "META-INF/gradle/my-custom-catalog.toml"
            }
        }
    }
}

手动提取Jar内指定文件的方法

如果确实需要将Jar内的toml文件提取出来单独使用,可以通过两种方式实现:

1. 用Gradle任务提取

在项目的build.gradle中添加如下任务:

task extractTomlFromJar(type: Copy) {
    // 从版本目录依赖对应的Jar包中读取内容
    from zipTree(configurations.versionCatalogs.find { it.name.contains("version-catalog") }.singleFile)
    // 只提取toml文件,可根据需要修改匹配规则
    include "**/*.toml"
    // 指定提取后的输出目录
    into "$buildDir/extracted-toml"
}

执行./gradlew extractTomlFromJar即可将文件提取到指定目录。

2. 用命令行工具提取

使用Java自带的jar命令直接提取:

# 替换为你的Jar包路径和目标文件路径
jar xf version-catalog-1.0.1-SNAPSHOT.jar gradle/libs.versions.toml

注意:优先使用Gradle原生的版本目录读取方式,手动提取仅适用于特殊场景,比如需要修改文件内容再使用的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:45:02