KIE Server无法从远程Maven仓库获得Artifact(jar包)解决方案
在使用kie-server docker镜像时,通过发送curl命令来执行指令。
setting.xml配置内容如下:
<profiles>
<profile>
<id>kie</id>
<properties>
</properties>
<repositories>
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Maven Repository Group</name>
<url>http://mynexus:8081/nexus/content/repositories/releases</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
... plugin repo also set ...
</profiles>
<activeProfiles>
<activeProfile>kie</activeProfile>
</activeProfiles>
当创建一个container并加载一个nexus仓库中的依赖时,输出如下信息:
09:29:35,236 WARN [org.appformer.maven.integration.embedder.MavenSettings] (default task-1) Environment variable M2_HOME is not set 09:29:36,033 INFO [org.appformer.maven.integration.Aether] (default task-1) The local repository directory /opt/jboss/.m2/repository doesn't exist. Creating it. 09:30:06,421 WARN [org.appformer.maven.integration.MavenRepository] (default task-1) Unable to resolve artifact: myGroup:myArtifact:0.0.1 09:30:36,542 ERROR [org.kie.server.services.impl.KieServerImpl] (default task-1) Error creating container 'myContainer' for module 'myGroup:myArtifact:0.0.1': java.lang.RuntimeException: Cannot find KieModule: myGroup:myArtifact:0.0.1
看起来是忽略了本地的maven仓库,而视图使用远程的maven仓库。如果采用本地仓库则可正常运行。在kie-server docker运行时,settings.xml中确认配置的是/opt/jboss/.m2文件夹。
那么,为什么会出现上面的问题呢?
解决问题可思考两个方面,如果直接使用镜像来部署kie-server,则需要在本地配置MAVEN_REPO_URL, MAVEN_REPO_USERNAME和MAVEN_REPO_PASSWORD等。关键本机的Maven也要安装,配置好MAVEN_HOME和对应的settings.xml。
如果需要在docker文件中配置Maven,则可参考如下配置:
FROM openjdk:8-jdk-alpine # Install Maven RUN apk add --no-cache curl tar bash ARG MAVEN_VERSION=3.6.3 RUN mkdir -p /usr/share/maven && \ curl -fsSL http://apache.osuosl.org/maven/maven-3/$MAVEN_VERSION/binaries/apache-maven-$MAVEN_VERSION-bin.tar.gz | tar -xzC /usr/share/maven --strip-components=1 && \ ln -s /usr/share/maven/bin/mvn /usr/bin/mvn ENV M2_HOME /usr/share/maven # copy maven settings and repository COPY my-maven-settings.xml /root/.m2/settings.xml # copy application COPY my-kieserver.jar /app.jar # specify default command CMD ["/usr/bin/java", "-Dkie.maven.settings.custom=/root/.m2/settings.xml", "-jar", "/app.jar"]
KIE Server使用Maven通常有三种路径:第一,本机安装的Maven,也就是配置好MAVEN_HOME的Maven;第二,默认的.m2文件下的settings.xml文件;第三,通过kie-server的系统参数(“kie.maven.settings.custom”)指定的settings.xml文件。
而这三者会组合使用。所以在使用的时候,一定要检查好环境中Maven的配置,而基于docker的容器化处理,更要核查一下docker内外的Maven环境配置。

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://www.choupangxia.com/2022/06/10/kie-server-remote-maven/