我正在创建一个应用程序来自动为启动器生成资源,这需要自动解析 maven 依赖项,但是在运行 JBoss Shrinkwrap Resolver 时我得到了 UnsupportedOperationException
我在 docker 容器中运行它,以避免本地存储库缓存,它在主机上的容器之外工作,但我不确定容器内缺少什么。
我的解析器配置是一个简单的示例,转换为MavenResolvedArtifact
MavenResolvedArtifact[] artifacts = Maven.configureResolver()
.withMavenCentralRepo(true)
.withRemoteRepo("internal-nexus", MAVEN_URL, "default")
.resolve("com.company:application:" + PROJECT_VERSION)
.withTransitivity()
.asResolvedArtifact();
我的Dockerfile也比较简单,使用openjdk9,包括bootstrapper程序,一个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
s 数组,但是在代码片段的最后一行抛出以下异常,.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 不允许我复制粘贴,所以我必须自己输入。
更新:还没有在谷歌上找到任何其他东西,尝试过干净的构建无济于事。