在 Gradle Build 中删除 Jar 签名

问题描述 投票:0回答:2

我们遇到了一个问题,从 gradle 构建的 war 无法加载到 tomcat,因为特定于签名 Jar 的安全异常。堆栈跟踪没有显示哪个 jar 导致了问题,为了让这个东西运行,我想知道当战争正在构建时我是否可以排除构建中的签名,但不知道如何使用 Gradle 来做到这一点。在 Maven 中,我相信这将是一个

<filter><exclude>
标签,但不确定 Gradle 中是否提供这种类型的东西。任何输入将不胜感激,抛出的异常如下。

Caused by: java.lang.SecurityException: Invalid signature file digest for 
java tomcat gradle jar
2个回答
15
投票

要查明 jar 文件是否已签名,您可以使用任何 zip 实用工具解压缩该 jar 文件。如果 jar 已签名,它将在 META-INF 文件夹下包含 *.RSA、*.SF 或 *.DSA 等文件。

为了在 gradle build 中排除这些签名文件,我在 build.gradle 中执行了以下操作。如果您使用任何其他插件来创建 jar,则应该检查该插件文档以获取更多详细信息。

jar {
from { (configurations.runtime).collect { it.isDirectory() ? it : zipTree(it) } } {
    exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
}
manifest {
    attributes("Main-Class": "com.nk.social.shareit.streams.AppMain")
}}

我的整个build.gradle文件如下所列:-

apply plugin: 'scala'

dependencies {
    compile group: 'org.apache.kafka', name: 'kafka-streams', version: '0.11.0.1'
    compile 'org.scala-lang:scala-library:2.12.2'
    compile 'com.sksamuel.elastic4s:elastic4s-core_2.12:5.4.2'
    compile 'com.sksamuel.elastic4s:elastic4s-http_2.12:5.4.2'
    compile 'org.apache.lucene:lucene-core:6.5.1'
    compile 'joda-time:joda-time:2.9.9'
    testCompile group: 'org.scalatest', name: 'scalatest_2.12', version: '3.0.4'
}


jar {
    from { (configurations.runtime).collect { it.isDirectory() ? it : zipTree(it) } } {
        exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
    }
    manifest {
        attributes("Main-Class": "com.nk.social.shareit.streams.AppMain")
    }
}

希望这有帮助。


1
投票

例如,以本线程中给出的罐子为例,我在构建胖罐子时遇到问题。

主要动机是构建过程也会跳过一些依赖项。

找到的解决方案如下,仅包含一个小改动

jar {
    manifest {
        attributes(
                'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
                'Main-Class': 'io.vincenzopalazzo.lightning.App'
        )
    }

    from(configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA'
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.