Maven Deploy插件S3 Wagon与Java 11不兼容JAXB



我正在尝试将构建从Java 8迁移到Java 11。我的存储库位于S3存储桶中。为了使S3 wagon与Java-11一起工作,我添加了JAXB作为插件的依赖项:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
<dependencies>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
</dependency>
</dependencies>
</plugin>

不幸的是,它仍然没有帮助,并且部署插件失败。

错误日志片段(您可以在类路径中看到jaxb(:

Caused by: org.apache.maven.plugin.PluginContainerException: A required class was missing while executing org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file: javax/xml/bind/DatatypeConverter
-----------------------------------------------------
realm =    plugin>org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1
strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
urls[0] = file:/root/.m2/repository/org/apache/maven/plugins/maven-deploy-plugin/3.0.0-M1/maven-deploy-plugin-3.0.0-M1.jar
urls[1] = file:/root/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/2.3.2/jakarta.xml.bind-api-2.3.2.jar
urls[2] = file:/root/.m2/repository/jakarta/activation/jakarta.activation-api/1.2.1/jakarta.activation-api-1.2.1.jar
urls[3] = file:/root/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.2/jaxb-runtime-2.3.2.jar
urls[4] = file:/root/.m2/repository/org/glassfish/jaxb/txw2/2.3.2/txw2-2.3.2.jar
urls[5] = file:/root/.m2/repository/com/sun/istack/istack-commons-runtime/3.0.8/istack-commons-runtime-3.0.8.jar
urls[6] = file:/root/.m2/repository/org/jvnet/staxex/stax-ex/1.8.1/stax-ex-1.8.1.jar
urls[7] = file:/root/.m2/repository/com/sun/xml/fastinfoset/FastInfoset/1.2.16/FastInfoset-1.2.16.jar
urls[8] = file:/root/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
urls[9] = file:/root/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
urls[10] = file:/root/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
urls[11] = file:/root/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
urls[12] = file:/root/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar
urls[13] = file:/root/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
urls[14] = file:/root/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
urls[15] = file:/root/.m2/repository/org/apache/maven/shared/maven-artifact-transfer/0.10.0/maven-artifact-transfer-0.10.0.jar
urls[16] = file:/root/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.0.1/maven-common-artifact-filters-3.0.1.jar
urls[17] = file:/root/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar
urls[18] = file:/root/.m2/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar
urls[19] = file:/root/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar
urls[20] = file:/root/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar

设置中还缺少什么吗?

-编辑-

作为一个解决方案,我已经设法通过移动货车扩展:使其工作

<build>
<extensions>
<extension>
<groupId>org.zalando.org.springframework.build</groupId>
<artifactId>aws-maven</artifactId>
<version>5.0.0.RELEASE-zal-2</version>
</extension>
</extensions>
</build>

进入maven-deploy-plugin依赖项部分。但对我来说,这似乎是一种变通方法,而不是解决问题的办法。

  • 编辑2-

对我们有效的最终解决方案是使用S3 wagon扩展,该扩展是使用更新的AWS SDK(选择com.github.nodely:maven-s3-wagon:1.0.0(构建的。按需工作(将扩展作为插件的依赖项添加是非常困难的,因为它必须添加到任何使用S3存储库的插件中(。

了解最初的问题以及如何将依赖关系应用于这样的运行时案例仍然是件好事。

我设法解决了完全相同的问题,但使用了具有此扩展的wagon的不同实现。它必须是支持Java 11的1.2.0版本。

<extension>
<groupId>com.allogy.maven.wagon</groupId>
<artifactId>maven-s3-wagon</artifactId>
<version>1.2.0</version>
</extension>

最新更新