【发布时间】:2019-11-20 01:52:03
【问题描述】:
我正在尝试将我的构建从 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 -
对我们有用的最终解决方案是使用使用较新的 AWS 开发工具包(选择 com.github.nodely:maven-s3-wagon:1.0.0)构建的 S3 wagon 扩展。按需要工作(将扩展作为依赖项添加到插件是很麻烦的,因为它必须添加到任何使用 S3 存储库的插件中)。
仍然会很高兴了解原始问题以及如何将依赖项应用于此类运行时案例。
【问题讨论】:
-
JAXB 已与 JDK10 或 JDK11 一起删除我目前还不能 100% 确定...但根据您手动执行的错误消息
mvn deploy:deploy-file这通常是一个坏主意.. . -
这些信息都没有帮助。我知道它已被删除,这就是解决方案是将 jaxb 添加到插件依赖项的原因。问题是当 S3 wagon 被定义为扩展时它不起作用。我使用
deploy:deploy-file,因为这是我需要做的,这正是我需要在构建期间将外部文件部署到内部仓库中。
标签: java maven amazon-s3 jaxb java-11