我正在创建一个应用程序来自动生成启动器的资源,这需要自动解析 maven 依赖项,但是我在运行 JBoss 收缩包装解析器时遇到不支持的操作异常
我在 docker 容器内运行它,以避免本地存储库缓存,它在主机上的容器之外工作,但我不确定容器内缺少什么。
我的解析器配置是一个简单的示例,转换为MavenResolvedArtifact
MavenResolvedArtifact[] artifacts = Maven.configureResolver()
.withMavenCentralRepo(true)
.withRemoteRepo("internal-nexus", MAVEN_URL, "default")
.resolve("com.company:application:" + PROJECT_VERSION)
.withTransitivity()
.asResolvedArtifact();
我的 Dockerfile 也相对简单,使用 openjdk9,包括引导程序、shell 脚本和一些环境变量。
FROM openjdk:9
COPY bootstrapper-shaded.jar /bootstrapper.jar
COPY docker-run.sh /run.sh
ENV CLONE_URL https://github.com/company/repository.git
ENV NEXUS_BASE https://nexus.company.com/
ENV NEXUS_REPO repository
RUN chmod +x /run.sh
RUN apt-get update && apt-get install -y git software-properties-common maven
ENTRYPOINT ["/run.sh"]
run.sh 脚本复制一些文件(为简洁起见删除(,运行构建,然后运行引导程序
#!/bin/sh
rm -rf /boostrap/*
cd /bootstrap/
git clone $CLONE_URL work
cd work
chmod +x ./gradlew
./gradlew clean build
NEXUS_URL=`printf $NEXUS_BASE; printf "/repository/"; printf $NEXUS_REPO` ./gradlew upload
java -jar /bootstrapper.jar 0
我希望输出与主机上的输出相同,一个MavenResolvedArtifact
的数组,但是在代码片段的最后一行抛出以下异常,.asResolvedArtifact()
Exception in thread "main" java.lang.UnsupportedOperationException: No format processor for org.jboss.shrinkwrap.resolver.api.maven.MavenResolvedArtifact was found. Supported processors are: class org.jboss.shrinkwrap.resolver.impl.maven.archive.ArchiveFormatProcessor
at org.jboss.shrinkwrap.resolver.spi.format.FormatProcessors.find(FormatProcessors.java:53)
at org.jboss.shrinkwrap.resolver.impl.maven.MavenFormatStageImpl.as(MavenFormatStageImpl.java:84)
at org.jboss.shrinkwrap.resolver.impl.maven.MavenFormatStageImpl.asResolvedArtifact(MavenFormatStageImpl.java:71)
at org.jboss.shrinkwrap.resolver.impl.maven.MavenFormatStageImpl.asResolvedArtifact(MavenFormatStageImpl.java:40)
at com.company.ResolveTask.run(ResolveTask.java:39)
at com.company.Bootstrapper.main(Bootstrapper.java:102)
对于堆栈跟踪中的任何拼写错误,VM 不允许我复制粘贴出来,所以我不得不自己输入出来。
更新:尚未在Google上找到其他任何内容,已尝试干净的构建无济于事。
您需要将工件的类型更改为
org.jboss.shrinkwrap.resolver.impl.maven.archive.ArchiveFormatProcessor
或者至少在你宣布时把它投到那个。