【问题标题】:Create dependency folder with Dependent jars with Maven Shade plugin使用 Maven Shade 插件创建包含依赖 jar 的依赖文件夹
【发布时间】:2017-04-04 07:46:25
【问题描述】:

我正在使用 maven shade 插件创建一个胖罐子,其中也包括一些充气城堡罐子。但这会因为 Bouncy Castle 的未签名版本而产生问题。

java.lang.SecurityException: JCE 无法验证提供者 BC

现在的解决方案之一是拥有外部依赖文件夹并在 fat jar 的清单文件中定义此类路径。

例如:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                            <artifactSet>
                                <excludes>
                                    <exclude>org.bouncycastle:*:*:*</exclude>
                                </excludes>
                            </artifactSet>
                        <finalName>Relay-S3-Monitor-jar-with-dependencies</finalName>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>at.seresunit.lecturemanager_connector.App</mainClass>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.handlers</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                <resource>META-INF/spring.schemas</resource>
                            </transformer>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                 <manifestEntries>
                                    <Main-Class>com.pb.relay.s3.CamelBoot</Main-Class>
                                    <Class-Path>. bouncycastle_libs/bcpg-jdk15on-1.55.jar bouncycastle_libs/bcprov-jdk15on-1.55.jar bouncycastle_libs/bcprov-jdk16-1.45.jar</Class-Path>
                                </manifestEntries>
                            </transformer>
                        </transformers>
                    </configuration>
                </execution>
            </executions>
        </plugin

现在我需要的是:在同一个 pom.xml 中,我需要插入一个创建 depencies 文件夹的部分(插件)(只有充气城堡 jar)

【问题讨论】:

    标签: maven bouncycastle maven-shade-plugin


    【解决方案1】:

    使用依赖插件,可以调用dependency:copy将依赖复制到文件夹中

    https://maven.apache.org/plugins/maven-dependency-plugin/copy-mojo.html

    【讨论】:

    • 这只是节省了一天:)
    【解决方案2】:

    在编译依赖于 BouncyCastle 的 uber jar 时,我看到了同样的错误:

    Exception in thread "main" java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
    

    我意识到在你的情况下你很擅长将 jar 导出到一个单独的目录,但对于那些对单个 jar 感兴趣的人,问题是 Maven 的 shade 插件会爆炸破坏加密签名的 jar 文件(this explanation 了解详细信息)。

    您可以改用 executable packer maven plugin solution,它使用 jar-in-jar 方法,将 JCE 的签名保留在单个可执行 jar 中。

    【讨论】:

      【解决方案3】:

      如果您正在寻找不解压库但使用特殊 JAR 类加载器的 Fat JAR 解决方案,请查看my project here

      免责声明:我没有编写代码,只是将其打包并发布到 Maven Central 并在我的自述文件中描述如何使用它。

      我个人使用它来创建包含 BouncyCastle 依赖项的可运行 uber JAR。也许它对你也有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 2015-05-12
        • 1970-01-01
        • 2020-03-06
        • 1970-01-01
        • 2013-07-19
        • 2014-10-06
        相关资源
        最近更新 更多