从gradle运行时依赖项JAR中提取json文件

从gradle运行时依赖项JAR中提取json文件,gradle,gradle-plugin,Gradle,Gradle Plugin,我需要浏览运行时依赖项列表,并从jar中提取文件夹中的json文件,其中包含相应的jar名称 我已经尝试了下面的代码,但是它创建了一个文件夹,其中包含它读取的最后一个jar的名称,并将所有json文件放在其中,以维护jar根目录的路径 task copyJsonToQrelease(type: Copy) { configurations.runtime.each { File f -> from zipTree(f) include "**/*.j

我需要浏览
运行时依赖项列表
,并从jar中提取文件夹中的
json
文件,其中包含相应的
jar名称

我已经尝试了下面的代码,但是它创建了一个文件夹,其中包含它读取的最后一个jar的名称,并将所有
json
文件放在其中,以维护
jar根目录的路径

task copyJsonToQrelease(type: Copy) {
    configurations.runtime.each { File f ->
        from zipTree(f)
        include "**/*.json"
        into "${viewRoot}/Qrelease/JsonResources/"+f.getName()
        includeEmptyDirs = false
    }
}
结果:Qrelease\JsonResources\netty-common-4.1.16.Final.jar\release resources\DummyService.json

预期结果:Qrelease\JsonResources\MyJarName\DummyService.json


jar文件的名称是
netty-common-4.1.16.Final.jar

所以,
MyJarName
部分应该是正确的,对吗

release resources\DymmyService.json
是json文件的名称

因此,您需要创建json文件

这适用于windows(未测试):


注意-此正则表达式是特定于操作系统的。更好:构建regex操作系统所依赖的

jar文件的名称是
netty-common-4.1.16.Final.jar

所以,
MyJarName
部分应该是正确的,对吗

release resources\DymmyService.json
是json文件的名称

因此,您需要创建json文件

这适用于windows(未测试):


注意-此正则表达式是特定于操作系统的。更好:构建regex操作系统所依赖的

事实上,我不想重命名json文件,根据我的说法,f.getName()应该包含jar名称,因此提取的json的路径应该是Qrelease\JsonResources\MyJarName\DummyService.json,但它没有发生。是的,
f.getName()
提供了jar文件名,就我所知,这部分是正确的。但是,您正在文件树上应用筛选器,结果是“筛选文件树”,并且您正在将该筛选文件树复制到目录中。示例中的json文件名是
release resources\DummyService.json
。如果您不想重命名它。。您必须接受结果。实际上,我不想重命名json文件,根据我的说法,f.getName()应该包含jar名称,因此提取的json的路径应该是Qrelease\JsonResources\MyJarName\DummyService.json,但它不会发生。是的,
f.getName()
提供了jar文件名,这一部分是正确的——据我所知。但是,您正在文件树上应用筛选器,结果是“筛选文件树”,并且您正在将该筛选文件树复制到目录中。示例中的json文件名是
release resources\DummyService.json
。如果您不想重命名它。。你必须接受结果。
rename(/.*\\(.+json)/, '$1')