问题标签 [maven-shade-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven - 如何在 Maven 阴影插件中设置清单类路径?
我正在使用阴影插件,除了能够为清单设置 Class-Path 之外,一切正常
我明白了
看着文档
应该能够解析任何有效的清单资源吗?我试过 clss-path Class-Path ClassPath 没有任何效果...
我需要类路径来设置外部应用程序属性文件的位置。
由于一个众所周知的问题,我正在使用 shade 插件而不是程序集:
http://blog.idm.fr/2009/09/maven-assembly-plugin-and-spring-namespace-handlers.html
顺便说一句,我可以很容易地在组装中做到这一点:(而且它有效)
我不能通过 maven 使用 oneJar 插件,因为你也不能设置清单条目。(我不认为?)
有任何想法吗?
java - maven-jarsigner-plugin 在 Jenkins 构建期间失败,但不在命令行上
给出以下环境:
- 视窗服务器 2012
- Java 1.6
- 配置了(程序集或阴影插件)和 jarsigner:sign/verify 插件的 Maven 项目
- 在 Tomcat 7 中运行的 Jenkins 1.518(与 Java 1.7 一起运行)
- Tomcat 作为 Windows 服务用户运行
在构建 maven 项目时,一切正常,并且构建了程序集(使用程序集插件以及 shade 插件),最后使用 maven-jarsigner-plugin 对程序集进行签名和验证。
但是当 jarsigner 试图签署程序集时,在 Jenkins 中配置的相同项目在构建期间失败。日志文件说:
我将上面的日志文件从德语翻译成英语,所以它可能会有所不同,因为我不知道确切的措辞。
详细日志文件说:
寻找解决方案把我带到了这个博客条目: http ://www.iliachemodanov.ru/en/blog-en/14-tools/maven/44-maven-assembly-plugin-bug-en
这里提到了“maven-shade-plugin”作为解决方案,所以我试一试。重新配置 pom 文件但效果相同。它接缝Windows或Tomcat或Jenkins在程序集上保留文件句柄,而jarsigner插件无法重命名它。
所以我对一个可能的解决方案的回答。任何其他更复杂的解决方案表示赞赏。
java - 如何从阴影 jar 中排除 *.DSA 和 *.SF 文件?
我在 pom.xml 中有一个部分
我想从最终的 jar 中排除 *.SF 和 *.DSA 文件。但我收到以下消息:
并且不排除文件。有谁知道如何克服它?
java - 在子项目中使用重定位的依赖项
嘿嘿,
我目前正在开发一个 bukkit 插件,我想使用番石榴。Bukkit 仍然使用 Guava 11.0,但我想使用 14.0。所以我试图在我的主模块中重新定位番石榴。这非常有效。同一级别的另一个模块也使用番石榴,它需要“相同的”番石榴。所以主要项目中也使用了番石榴。当然,导入发生了变化,主项目和其他模块不兼容。
项目结构:
家长:
- 主模块:使用重定位版本的番石榴(14.0)#
- 另一个模块:使用 guava 14.0 但未重新定位 -> 与主模块不兼容
我已经尝试将番石榴重新定位到另一个模块中的相同路径,但没有任何反应。
也许有人知道如何解决这个问题。我只需要一种在我的其他模块中使用我重新定位的番石榴的方法:/
相关文章:跨所有模块的 Maven 阴影重定位?
maven - Maven Shade Plugin 生成两个罐子
到目前为止,我使用 maven 程序集插件为每个工件生成两个 JAR - 编译源和依赖项 - 原因很简单 - 仅通过网络部署已编译的源比部署 40 MB 的一体机 JAR 快得多数据的。
由于覆盖了内部文件,我不得不切换到 maven shade 插件才能使用该<transformers>
功能。但是我无法同时运行这两个执行:
当我运行时mvn package
,只运行第二次执行。第一个总是被忽略。使用 Maven 程序集插件,它工作得很好。
当然解决方案可能是同时使用程序集和阴影插件,但我想找到更一致的解决方案。
maven - 将 maven-bundle-plugin 与 maven-shade-plugin 一起使用
我正在使用 maven-shade-plugin 在构建的打包阶段重新定位一些包。我还使用 maven-bundle-plugin 来生成清单。问题是捆绑插件在阴影插件之前运行(在进程类阶段),并且在生成的清单的导出中不包含我的任何阴影包。
我怎样才能让这两个插件相互配合,以便我重新定位的包被捆绑插件像任何其他包一样对待?
--
根据要求,我的 POM 的 Shade 和 bundle 部分:
取自这里
java - Maven 阴影插件无法解析 javax.jnlp
我正在尝试使用shade
插件打包我的项目,但出现以下错误:
这是我的 pom 构建插件条目:
我正在使用 MacOSX 10.6 和 Java 1.6 怎么了?
java - 通过 Maven Shade 插件构建着色 jar 时在 Clojure .clj 文件上保留时间戳
当使用 maven-shade-plugin 打包包含一些 Clojure 库和一些 Java 的 jar 工件时。我们对 Clojure 代码使用 AOT 编译。当我们加载 jar 时,它的加载时间非常慢。AOT 编译应该对此有很大帮助,但这不是我们所看到的。我们在 java jar -verbose 输出中注意到在加载 Clojure 类时发生了很多JVM__DEFINE_CLASS调用。
这没有任何意义,因为我们的更多 Clojure 代码被 AOT 编译为 .class 文件。
结果 maven-shade-plugin 创建了所有新文件,最终工件中带有新的时间戳Clojure 使用 .clj 文件与 .class 文件上的时间戳信息来确定文件是否需要重新编译。maven-shade-plugin 导致 .clj 文件及其关联的 .class 文件具有相同的时间戳,因此 Clojure 总是选择动态重新编译源代码。
在这一点上,我们能够弄清楚的唯一解决方法是编写一个脚本,该脚本将重新打开阴影 jar 并将 .clj 文件时间戳恢复到过去的某个时间,这样它们就不会等于它们关联的 .class 文件的时间戳。
有谁知道更好的方法?
java - SSHJ 和 Maven 阴影插件
在 Eclipse 中测试 SSHJ,一切看起来都不错。但是当我使用 Maven shade 插件打包 SSHJ 时,我得到以下错误:
添加
将错误消息更改为:
知道如何解决这个问题吗?
关于我为什么要使用阴影的一些背景知识......我试图达到一个点,即 Java 的使用和小型实用程序的分发非常简单。所以我使用这个创建了一个真正可执行的 jar:https ://github.com/brianm/really-executable-jars-maven-plugin 。这使我能够创建一个可执行文件来分发并添加到用户的路径中。有点像 Go 有一个包含所有依赖项的二进制文件。
maven - 测试期间的 Maven 依赖冲突(万无一失)但不是生产
我有一个应用程序需要几个不同版本的相同库。通过 intellij 运行时,这不是问题,因为它以一种避免冲突的方式导出类路径。然后我在编译生产时使用 maven shade 插件创建一个 uber-jar。
但是,当使用 surefire 插件运行我的单元测试时,冲突再次出现。有谁知道我可以确保万无一失的插件以避免这些冲突的方式创建类路径的方法?
谢谢!
更新:下面是我得到的错误(虽然它是相当特定于我的应用程序)。基本上有两个版本的 Saxon HE 和 PE 都在加载。运行 surefire 测试时,会导致此异常: