Maven 着色两次 - 如何定义要着色的 jar
Maven shade twice - how to define jar to shade
在我的构建过程中,我需要遮光两次。为什么我这样做与问题并不相关,但原因如下:因为我首先屏蔽了自己的依赖项,然后我混淆了第一个 fat jar,然后我也想屏蔽第三方依赖项。
第一个困难是目标 运行 的顺序正确。默认情况下,如果一切都发生在打包阶段(这看起来很合乎逻辑),那么两种着色都会连续执行,然后再执行混淆。我设法调整了 Maven 阶段,以便目标以正确的顺序执行,但现在我被卡住了,因为看起来:
- 第一个阴影在我的输出上自动执行
maven-jar-plugin
- 第二个阴影做同样的事情
因此我得到了一个经过模糊处理的部分着色罐子和一个完全着色的未模糊处理罐子。
我找不到将特定源 jar 强制为阴影配置的相关选项。 Shade documentation 没有给出线索。我想我可以通过执行所有操作来解决我的问题,但我宁愿不这样做。
我对似乎在请求类似内容的 source code and indeed, it doesn't look like it's possible to specify the input jar in the configuration, as of plugin version 3.2.1. The error message around line 550 specifically mentions a requirement on the jar from the jar
plugin. There are some open issues 进行了简短扫描。
不过在检查了文档之后,我想知道您是否可以配置一些东西来继续覆盖主 jar (target/my-artifact-1.0.0.jar
)。换句话说,配置第一个着色执行和混淆以将输出定向到该文件。然后,第二个阴影执行将有正确的输入。这种方法的缺点是如果出现问题,将没有中间文件来分析。
对于这种情况,也许按照 MSHADE-304 评论中的建议编写自定义转换器是更好的主意。
在我的构建过程中,我需要遮光两次。为什么我这样做与问题并不相关,但原因如下:因为我首先屏蔽了自己的依赖项,然后我混淆了第一个 fat jar,然后我也想屏蔽第三方依赖项。
第一个困难是目标 运行 的顺序正确。默认情况下,如果一切都发生在打包阶段(这看起来很合乎逻辑),那么两种着色都会连续执行,然后再执行混淆。我设法调整了 Maven 阶段,以便目标以正确的顺序执行,但现在我被卡住了,因为看起来:
- 第一个阴影在我的输出上自动执行
maven-jar-plugin
- 第二个阴影做同样的事情
因此我得到了一个经过模糊处理的部分着色罐子和一个完全着色的未模糊处理罐子。
我找不到将特定源 jar 强制为阴影配置的相关选项。 Shade documentation 没有给出线索。我想我可以通过执行所有操作来解决我的问题,但我宁愿不这样做。
我对似乎在请求类似内容的 source code and indeed, it doesn't look like it's possible to specify the input jar in the configuration, as of plugin version 3.2.1. The error message around line 550 specifically mentions a requirement on the jar from the jar
plugin. There are some open issues 进行了简短扫描。
不过在检查了文档之后,我想知道您是否可以配置一些东西来继续覆盖主 jar (target/my-artifact-1.0.0.jar
)。换句话说,配置第一个着色执行和混淆以将输出定向到该文件。然后,第二个阴影执行将有正确的输入。这种方法的缺点是如果出现问题,将没有中间文件来分析。
对于这种情况,也许按照 MSHADE-304 评论中的建议编写自定义转换器是更好的主意。