问题标签 [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.
java - maven-shade-plugin 的用途是什么,为什么要重新定位 Java 包?
我发现有人在 pom.xml 中使用了 maven-shade-plugin。我以前从未使用过 maven-shade-plugin(我是 Maven n00b),所以我试图了解使用它的原因以及它的作用。
我查看了Maven 文档,但是我无法理解这个声明:
这个插件提供了将工件打包在 uber-jar 中的能力,包括它的依赖项和遮蔽 - 即重命名 - 一些依赖项的包。
页面上的文档似乎对新手不太友好。
什么是“超级罐”?为什么有人想做一个?重命名依赖项的包有什么意义?我尝试浏览 maven-shade-plugin apache 页面上的示例,例如“为 Uber Jar 选择内容”,但我仍然无法理解“着色”正在完成什么。
任何指向说明性示例/用例的指针(解释为什么在这种情况下需要阴影 - 它解决了什么问题)将不胜感激。最后,我应该什么时候使用 maven-shade-plugin?
java - 如何使用maven避免类冲突
我用maven-shade-plugin建了一个项目,但是遇到了一个我处理不了的问题。有两个jar几乎有相同的类并且路径相同,aspectjweaver.jar和aspectjrt.jar,当打包jar,我得到警告“重复的类已经存在于......”。我尝试使用“重定位”属性来重定位类,但问题是,如何重新识别两个 jar 中的类?接下来是我的 Pom.xml 的一部分。org.apache.maven.plugins maven-shade-plugin 1.3.1
maven - maven 使用 shade jar 打包 JDO 依赖项
我正在尝试打包一个由我的代码 + 依赖项组成的阴影 jar。我可以很好地打包所有东西,但是因为我使用的是 DataNucleus(datanucleus-core、datanucleus-api-jdo、datanucleus-rdbms),所以它们的 plugin.xml 在它们的根目录中。我尝试使用带有阴影的 XmlAppendingTransformer,但由于这些 xml 的根元素只是<plugin>
将所有<extension>
元素合并到一个巨大<plugin>
标签中的转换器,并且在运行时 DataNucleus 类加载器无法找到正确的插件。所以我的问题是:
1) 将所有依赖项打包到 1 个 jar 中是一个好习惯吗?或者我应该将依赖项复制到一个文件夹中并在运行时将该文件夹包含在类路径中?
2)如果我想用我的jar打包DataNucleus,如何处理多个plugin.xml?我尝试将它们放在<plugins>
根标签中,但这也不起作用。他们必须在根文件夹中吗?我可以在阴影过程中将它们移动到不同的文件夹吗?
maven - 如何根据 maven shade 插件的顶级依赖项排除?
我有一个要从胖 jar 中排除的依赖项,并且该依赖项有很多传递依赖项。是否可以在我的 pom 文件中设置一些配置,以便将依赖项及其所有传递依赖项从胖 jar 中排除,而不列出这些依赖项中的每一个?
eclipse - m2e shade eclipse“项目主工件不存在”
我正在尝试制作一个部署包,它将我的 Maven 模块的所有依赖项捆绑在一起,这些依赖项与 Eclipse 中的另一个 Maven 项目具有依赖关系。
我的 pom.xml 中有这个
我在 Eclipse 中使用“m2 Maven Build”,目标是“org.apache.maven.plugins:maven-shade-plugin:shade”,并勾选“Resolve Workspace artifacts”。
它失败了
此时我没有主意了。
java - 使用 maven-shade-plugin 构建的 pdfbox 程序的结果与正常的 NetBeans 运行不同
我有使用 PDFBox 1.7.1 的 java 程序,它是用 maven-shade-plugin 2.0 构建的。
这是使用 PDFBox api 的代码:
所以基本上方法load()
从字节数组加载pdf文档,方法extractText()
将从PDF中提取的文本作为字节数组返回。当我从 NetBeansRun
按钮运行程序时它可以工作,但是当我从使用 maven-shade-plugin 构建的单个 jar 运行它时,返回的文本的字符编码错误。例如单词:
我知道它是完全相同的文件(字节数组),作为to PdfFile.load()
两次运行的参数。所以问题在于PDF框以两种不同格式返回文本......
我有3个问题:
- 为什么用 shade 插件编码构建的 jar 不同?
- 如何控制/设置使用 shade 插件构建的 jar 使用的编码?
- 如何强制 PDF 框以正确格式返回文本?
我知道在命令行 PDFBox 中有设置编码的选项:
但我在 PdfBox api 中找不到它...
已解决:我必须改变
到
java - Maven 阴影插件
我正在尝试使用 maven shade 插件和 maven 程序集插件从我的 maven 多模块构建中构建程序集。我需要的是这样的结构:
assembly.zip
------------- dllDir
-----一些 dll 位于子模块
--------- ---- .netDir
-----------------完整的 jar(由所有模块 jar 组成)作为 .net lib (va ikvm)
--------- ---- fulljarDir
----------------- java full jar(由所有模块jar组成)
----------------- java api jar(仅某些类)
----------------- full-jar 源
----------------- api-jar来源
-------------库
-----所有子模块库(“正常”-jar、sources-jar、jar-有依赖)
-------------extlibDir
-----------------位于某些子模块目录中的其他一些 jars/dll
------------- docDir
---- -------------一些文档(从组装项目本身复制)
目前,我正在使用程序集项目中的 shade 插件来创建完整的 jar和api-jar(所有模块都被描述为程序集项目的依赖项)及其源代码。
我使用程序集插件(带有程序集描述符)从模块中收集 jar 和 dll:
现在的问题是我正在使用 shade 插件来编译 fat jar(所有模块的)。但我也在使用模块,所以需要打包pom
,这会导致这种情况,即阴影插件创建 pom(其中包含源代码)而不是 jar。如果我<finalName>
在阴影中使用标签,我可以将完整的工件重命名为 jar,但不会重命名生成的源。
有什么提示或技巧吗?也许有更好的方法来生产这样的组件?
最好的,一月
maven - 使用 maven-shade-plugin,如何使用 dependencyReducedPom?
我正在开发一个开源项目(neo4j-connector),它大量使用maven-shade-plugin将 neo4j 应用程序包含在打包的 RAR 中,而不引用多个 jars(似乎是 maven-rar-plugin 的限制)。
无论如何,这样做时,neo4j-connector-impl(它使用 shade 插件)pom 将 neo4j 引用为依赖项,这并不完全准确,因为 neo4j 源代码嵌入在 neo4j-connector-impl jar 中。
我注意到有一个createDependencyReducedPom
标志允许生成仅包含非阴影组件的 pom。我如何使用该 pom 而不是标准的 pom 来获取该项目的依赖项?
spring - Maven shade插件和Spring资源导入:未引用的bean
我会用 Maven shade 插件构建一个 Spring - Jnlp 项目,以便只输出一个 jar 文件。该项目有一个依赖项,指的是二级 Spring 项目。生成的 jar 结构正确显示了所有指定的依赖包、类和资源,包括放置在存档根目录中的导入应用程序上下文.xml 。不幸的是,Spring 无法在执行时将配置的 bean 加载到导入的文件中。
pom.xml
应用程序上下文.xml
例外
maven - 阴影 .jar 已安装
在 maven 中安装时有什么方法可以禁用阴影 jar 的创建?
我试过了
但它仍然存在。
任何想法?谢谢。