问题标签 [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.

0 投票
1 回答
386 浏览

java - 在 Maven shade jar 中使用 SSHJ 进行远程连接

我已经使用 SSHJ 连接到远程计算机,并且从 IntelliJIDEA 执行此操作时效果很好。但是,当我尝试使用 maven-shade-plugin 构建“uberjar”时,我得到了如下所示的堆栈跟踪。

我确实在遮荫罐中有 org.bouncycastle.bcprov-jdk16,我的程序明确将其添加为提供者: Security.addProvider(new BouncyCastleProvider());

我试图根据此处提供的答案对 jar 进行签名:SSHJ and the Maven shade plugin Testing with 'maven-jarsigner-plugin' and 'maven-gpg-plugin' 但没有运气。

任何帮助深表感谢!谢谢!


0 投票
4 回答
39015 浏览

java - shade插件生成的dependency-reduced-pom.xml的目的是什么?

我阅读了文档并没有找到任何关于它的用途的内容。

0 投票
1 回答
836 浏览

java - maven-shade-plugin 和许可证

我正在使用 maven-shade-plugin 创建一个最小化的 jar,并且包含很多外部依赖项,即。拥有各种开放许可证。如何以方便和适当的方式保留这些许可证?

是否有任何现有方法可以自动将阴影 jar 的内容归因于特定的输入 jar,然后创建一个概述文件来解释哪些类文件/资源​​文件属于哪个输入 jar/许可证?

0 投票
2 回答
7028 浏览

java - maven-shade-plugin 错误:在“资源”的 org.apache.maven.plugins.shade.resource.ManifestResourceTransformer 中找不到 setter、adder 或字段

我试图从 Spring Boot 运行 Hello World 示例。当我在模块上运行“mvn package”时,出现以下错误:-

[错误] 无法在项目 spring.boot 上执行目标 org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default): Unable to parse configuration of mojo org.apache.maven.plugins:maven->阴影->插件:2.1:参数转换器的阴影:在 org.apache.maven.plugins.shade.resource.ManifestResourceTransformer 中找不到“资源”的设置器、加法器或字段 -> [帮助 1]

我没有使用任何“资源”属性,但似乎对此有所抱怨。知道我在这里做错了什么

这是模块的pom:-

0 投票
1 回答
1210 浏览

java - maven-shade-plugin:在战争项目中制作一个罐子?

问题在标题中。我成功地先做一个罐子(项目包装罐子)....然后我在 id do 之前移动它

mvn 清洁

把它放在别处。

或者我是一个战争项目,所以我必须将项目打包重命名为战争,然后我必须做一个

mvn 干净安装

我得到了我的战争。然后我从我的战争中导入第一个要使用的罐子。

有没有更清晰的方法可以使用 maven shade 插件来生成 war 和 jar。

包装如下

战争/罐子

在文件开头的项目描述中,每次我抛出 maven 时我都必须更改它。

谢谢

0 投票
1 回答
92 浏览

java - 基于解包签名jar的maven结构问题

我正在使用 maven 开发独立应用程序。我尝试过以下场景, 1. 使用 maven shade 插件解压缩所有依赖项,以便解压缩我签名的 jars(bcprov-jdk16-1.46.jar)。因此丢失了 jar 的标志,因为出现了安全异常“jce 无法验证提供者 bc”。2. 使用 maven 程序集插件(基于 assembly.xml)和 maven jar 插件(为所有 jar 设置类路径)这里我已经实现将所有依赖项移动到 lib 文件夹并创建我的项目 jar 没有依赖项最后我分组为压缩文件。这个逻辑修复了安全异常问题,我的应用程序工作正常。但是在这里我只需要将 bcprov-jdk16-1.46.jar 移动到 lib 文件夹中,其他 jar 需要在我的应用程序 jar 本身中。

但我需要做以下结构

0 投票
1 回答
578 浏览

java - 在 Maven 构建中包含合成文件作为 javadoc 工件

我正在使用 Maven 构建一个多模块项目,其中一个模块代表另一个模块的阴影版本:

父级
|- 基础
|- 基础阴影

base模块包含我所有的源文件,但我想将依赖项导入我自己的命名空间。这个阴影模块由我的base-shaded模块描述,它基本上只包含一个配置依赖项的 POMbase和 Maven Shade 插件。

这工作正常。Shade 插件包含所有依赖项并创建一个着色工件,包括一个源工件。但是,我缺少一个javadoc不是由 Shade 插件创建的工件。因此,我试图复制base模块的 javadoc 工件。但是,release:release目标忽略了这些阻止我部署到 Maven Central 的工件。尽管如此,我还是设法复制了这些文件并将它们包含在安装目标中。

是否有在构建中包含非汇编文件的规范方法?我开始认为我可能是错误的方法。

这是我的base-shadedPOM 的插件配置。不好意思说了这么多,最后还是Maven XML:

0 投票
0 回答
1264 浏览

java - 无法在 Maven shade uber jar 中加载资源

我需要能够为我的项目创建一个可执行 jar,其中所有内容都打包在一个 jar 中。我认为 Maven 阴影构建插件是最好的方法,但是在运行创建的 uber jar 版本时,我在加载资源时遇到了一些问题。

为了进一步解释这一点,在尝试加载我的资源时,我遇到了NullPointerException因为无法找到资源的问题。在创建的 jar 内部检查时,资源位于根目录中,所以我无法弄清楚为什么它无法找到它们。

为了澄清我的问题,我创建了这个小例子,它打印文件的内容。结构如下: Debug |-- pom.xml `-- src |-- main | `-- java | `-- Main.java |-- resources `- tmp.txt

文件的实际内容是:

主.java:

tmp.txt:

pom.xml:

如果您通过命令行在命令行上运行它,mvn exec:exec一切正常,并且预期的结果Hello World!是输出。

但是运行mvn package后跟java -jar target/debug-1.0-SNAPSHOT.jar会导致以下错误:

如果有人能指出我正确的方向或告诉我如何更改我的小例子以使其正常工作,我将不胜感激!

0 投票
0 回答
424 浏览

spring - 带有 maven-shade-plugin 的 Spring

我正在尝试在同一个应用程序中使用 spring 版本:第一个是带有 spring 2.6 的 webapp,第二个是带有 spring 4.0.2 的 jar 客户端。客户端与另一个应用程序通信,并将成为 webapp 的依赖项。问题是类加载器只会加载一次来自 spring 的公共类,它肯定会失败。

我尝试使用 ElasticSearch 方法来使用阴影依赖项(maven shade 插件)并将 spring 从客户端重新定位到不同的包(从 org.springframework 到 my.springframework),并且 uber jar 似乎构建得很好。

问题是 Spring 基于 spring.schemas 和 spring.handlers 来验证 xml 配置文件并从类路径(META-INF 文件夹和此路径在 Spring 代码中硬编码 - eq PluggableSchemaResolver)加载这些文件。我修改了这些文件以从 org.srpingframework 指向 my.springframework。

在运行时,类加载器似乎从 webapp 中读取这些文件,该文件具有这些文件但具有真正的 spring 路径,异常类似于

org.realsearch.springframework.beans.FatalBeanException:命名空间 [ http://www.springframework.org/schema/context]的类 [org.springframework.context.config.ContextNamespaceHandler]没有实现 [my.springframework.beans。 factory.xml.NamespaceHandler] 接口。

对我来说,实现我正在尝试的目标似乎是不可能的(在同一应用程序中使用弹簧版本,其中一个被重新定位)。这里有什么想法吗?我是赖吗?:d

0 投票
1 回答
698 浏览

java - 如何为单个代码库但多个工件配置 Maven

我有一个非常大的代码库,可以编译成 JAR。我还使用 shade 插件将其编译下来并将其与所有依赖项打包在一起。我还使用 war 插件来获取 WAR 文件。

关于 WAR 文件,一旦创建了目标,我就会有一个构建后事件,它只是将 WAR 文件复制到其目标,所以从技术上讲,我对此很满意。

我遇到的问题是其他两个 JAR。它们都共享相同的 artifactId,因为它们都构建在单个 pom.xml 中,并且由于多种原因这是不可接受的(包括但不限于某些依赖项缓存对于实现这一点非常愚蠢的事实) JAR 是瘦的,一个是完全依赖的)。

我需要做的是创建一个 pom.xml (或其组)适合构建(由 Jenkins),它可以使用相同的代码库(从 Github 提取)但创建两个单独的 JAR 文件,每个文件都有自己的 artifactId。

作为一名 Maven 新手,我已经通读了入门书,在我看来,我想要的是一个带有两个模块的父 pom.xml。但据我所知,每个模块都意味着一个带有单独代码的单独目录。正如我所说,这是从相同的代码库构建的。唯一的区别是一个是从“常规”构建构建的,另一个是使用“阴影”插件和目标构建的。

我能想到的唯一另一件事是构建“常规”JAR,然后使用“完整?”分类器构建阴影 JAR。如果这是答案,我可以谦虚地要求一些成人监督如何做到这一点,因为我没有看到如何做到这一点。

如果这不是答案,我怀疑这一定是一个常见问题,所以再一次,一些指导会非常有帮助!