如何强制 Quarkus 将 javax.activation 和 jakarta 库都包含到 uber jar 中

问题描述 投票:0回答:1

我有旧版 SDK,需要 javax.activation 依赖项。不幸的是,当我构建 Quarkus 3.15 uber jar 时,它没有将 javax.activation 包含到 uber.jar 中 我发现 Quarkus 2.5.4 包含 javax.activation 依赖项,但随后不包含 jakarta 依赖项,并且启动失败 有没有办法强制 Quarkus (quarkus-maven-plugin) 包含这两个依赖项? 我发现这个线程上面写着

Quarkus 扩展可能定义应始终排除的工件 从构建

quarkus legacy javax.activation
1个回答
0
投票

最直接的方式是maven-antrun-plugin 你可以做类似的事情

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
            <execution>
                <id>repackage-jar</id>
                <phase>package</phase>
                <configuration>
                    <target>
                        <move file="target/${project.build.finalName}-runner.jar"
                              tofile="target/${project.build.finalName}-runner-original.jar"/>

                        <mkdir dir="target/tmp"/>
                        <unzip src="lib/javax.activation-api-1.2.0.jar" dest="target/tmp"/>
                        <delete dir="target/tmp/META-INF"/>
                        <unzip src="target/${project.build.finalName}-runner-original.jar" dest="target/tmp"/>

                        <zip destfile="target/${project.build.finalName}-runner.jar">
                            <fileset dir="target/tmp"/>
                        </zip>

                        <delete dir="target/tmp"/>
                    </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
            </executions>
        </plugin>

如果您只需要这个库,那么就是这样,但您现在或在不久的将来可能会遇到更复杂的情况,您将需要其他东西。就我而言,我还需要 jaxb 和其他几个库,因此最后我必须手动打包每个库或寻找其他解决方案。最后,我将 Quarkus 降级到版本 2.5.4.FINAL,它对我很有帮助。 另外,我必须说不要使用 maven-shade-plugin 它不适合 Quarkus。 Shade 插件破坏了 Quarkus uber jar,因此即使激活.jar 已成功复制到 uber.jar 内,它也无法启动 无论如何,这是阴影插件配置,尽管我不建议使用它

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.4.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>

                            <shadedArtifactAttached>false</shadedArtifactAttached>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/versions/21/**</exclude>
                                        <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>my.package.MyApplication</mainClass>
                                </transformer>
                            </transformers>
                            <finalName>${project.build.finalName}-runner</finalName>

                            <relocations>
                                <relocation>
                                    <pattern>javax.activation</pattern>
                                    
   <shadedPattern>shaded.javax.activation</shadedPattern>
                                </relocation>
                            </relocations>
                            <minimizeJar>false</minimizeJar>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
© www.soinside.com 2019 - 2024. All rights reserved.