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://choupangxia.com/2022/06/10/kie-server-remote-maven/