- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于如何从 fatJar 中排除单个文件有很多重复的答案。通常,文件被排除在 META-INF 中,并且由于文件名冲突,或者因为它是从依赖库文件复制的签名,该签名对新创建的 Jar 文件无效。
Maven 示例:
How can I tell which signed jar is causing maven-shade-plugin to fail?
gradle 示例:
Removing Jar Signatures in Gradle Build
但是,这些解决方案仅单独删除了有问题的文件。
我们如何制作一个排除了特定依赖库(而不是该库中的单个文件)的 fatJar?
例如,问题 36226033 ,很容易排除从 BouncyCaSTLe 复制过来的签名,但是有没有办法排除依赖库 bcprov-jdk15on-*.jar
完全,以便用户必须拥有可用的库才能执行生成的胖 Jar?
事实证明这是行不通的:
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': version,
'Main-Class': 'com.alphawallet.scripttool.Main'
}
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
exclude('**/bcprov-jdk15on-1.62.jar')
with jar
}
exclude('**/bcprov-jdk15on-1.62.jar')
,该 jar 文件的内容仍会复制到生成的胖 jar 中。
最佳答案
不知道怎么样excludes
和 includes
工作,但我希望这些配置在类文件级别上工作,因为 jar 正在处理。
它不适用于 jar 。
我会选择这个解决方案:
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': version,
'Main-Class': 'com.alphawallet.scripttool.Main'
}
baseName = project.name + '-all'
configurations.compile.findAll { file ->
// file is of type java.io.File
// when true, jar file is unziped and added
file.name != "bcprov-jdk15on-1.62.jar"
}.sort { it.name }
.collect { file ->
logger.info("Including file: ${file.name}")
file.isDirectory() ? file : zipTree(file)
}
with jar
}
关于gradle:排除制作 fatJar 的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59642428/
我有一个文件夹($buildDir/some/lib),里面有很多jar。我想创建一个 jar ,其中所有 jar 都在里面但未压缩。我已经尝试了很多事情,但是所有这些都失败了,包括以下一项: tas
我知道这个问题被问了很多,有很多答案,但我仍然明白,为什么呢... 我正在尝试从带有gradle依赖项的projet生成.jar。 我有一个src/main/java/Launcher.java类,其
关于如何从 fatJar 中排除单个文件有很多重复的答案。通常,文件被排除在 META-INF 中,并且由于文件名冲突,或者因为它是从依赖库文件复制的签名,该签名对新创建的 Jar 文件无效。 Mav
我下载了一个使用 Gradle 的项目,将其解压缩,在该目录中打开 cmd 提示符并运行 gradle。我得到以下信息: Y:\cuchaz-enigma-853f818ee7ac>gradle bu
我有一个使用 gradle 脚本生成的胖 jar。当我运行以下命令时发布 gradle 脚本:- java -jar fileName.jar 它正在运行主要方法,一切都很好。然而,当我尝试混淆这个
This question already has answers here: '\r': command not found - .bashrc / .bash_profile [duplicate
我有一个简单的应用程序...但是,即使“hello world”也可以作为示例。我正在使用Gradle Kotlin dsl进行构建。 我已经应用了应用程序插件,并设置了mainClassName,但
我已经这样做好几天了,并尝试了很多东西,但我似乎无法弄清楚这一点。我正在将 intellij 中的多模块项目从 maven 转换为 gradle,其结构如下: com.automation build
我有一个如下所示的 gradle 构建脚本: dependencies { compile project(':common:avro') .... fatJar { manifest {
我正在开发一个java应用程序,它在main方法中启动jetty服务器。当我在我的 i.d.e (STS) 中运行它时,效果很好,但是当我使用 gradle 将其打包为 fatjar 时,服务器启动,
我遇到了一个问题,当尝试运行 jar 时,gradle fatJar/uberJar 导致以下异常: Error: Could not find or load main class com.domh
我正在从事一个使用 log4j2 日志记录的项目。在 intellij 中开发时,一切正常,日志记录按预期完成。 log4j2.xml 通过在启动时通过 intellij 设置传递给 jvm 的 ja
private static HttpHandler createHandler(HttpHandler servletHandler) { return Handlers.path()
我正在使用 FatJar 创建一个包含 postgresql.jar、jdatepicker.jar 和 native 库的 jar。我已将项目合并到一个 jar 中。没有 postgresql 和
这是 how to execute a built fat JAR as a gradle task? 的后续问题我没有足够的分数来提出我的问题作为评论。所以我得再问一遍。这个问题已经在其他格式和场景
我有一个库,要求我使用aspectjweaver jar 指定javaagent。例如。 java -jar -javaagent:/some/location/aspectjweaver-1.8.
据我了解,FatJar 是一个基于 OSGi 框架的 Eclipse 插件。我相信这使得它很难在 OSGi 平台之外使用。此外,查看反编译的 FatJar,它似乎需要大量 OSGi 和 Eclipse
我已经为此寻找解决方案 4 天了,但没有成功, 首先执行正常的 Gradle 构建任务会生成一个很小的 7kB jar 文件,这显然不起作用,然后我为主类添加了 jar 配置: jar {
我想生成一个包含多个模块和依赖项的 Jar。我安装了 FatJar 插件 但出现以下错误: 我的代码: 尝试使用 shadowJar Error:(61, 0) Could not find meth
我正在尝试使用 ShadowJar 构建一个 fatjar。我的应用程序和 gradle 代码如下。我使用 Gradle 5.0 进行构建。当我运行 ./gradlew run 时,代码有效。当我运行
我是一名优秀的程序员,十分优秀!