Dun*_*ebs 9 java tomcat jar gradle
由于特定于已签名 Jar 的安全异常,我们遇到了从 gradle 构建的战争无法在 tomcat 中加载的问题。堆栈跟踪没有显示是什么 jar 导致了问题,为了让这个东西运行,我想知道我是否可以在构建战争时排除构建中的签名,但不知道如何使用 Gradle 做到这一点。在 maven 中,我相信它会是一个<filter><exclude>标签,但不确定 Gradle 中是否提供这种类型的东西。任何输入将不胜感激,抛出的异常如下。
Caused by: java.lang.SecurityException: Invalid signature file digest for
Run Code Online (Sandbox Code Playgroud)
小智 10
要确定 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")
}}
Run Code Online (Sandbox Code Playgroud)
我的整个 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")
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
4758 次 |
| 最近记录: |