Skaffold/IntelliJ如何配置maven镜像

Skaffold/IntelliJ how to configure maven mirror

我正在尝试使用 Skaffold 和 IntelliJ 直接在 Kubernetes 中进行开发,但是我在使用 maven 时遇到了问题,当 IntelliJ 尝试初始化环境时发生错误

 Running "bash -c curl --fail --show-error --silent --location --retry 3 
 https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U- 
 jdk_x64_linux_hotspot_11.0.10_9.tar.gz | tar xz --directory /layers/google.java.runtime/java -- 
 strip-components=1"
 [builder] Done "bash -c curl --fail --show-error --silent --location --retry..." (59.3720683s)
 [builder] === Java - Maven (google.java.maven@0.9.0) ===
 [builder] Installing Maven v3.6.3 

 [builder] Running "/layers/google.java.maven/maven/bin/mvn clean package --batch-mode -DskipTests -- 
 quiet"
 [builder] [ERROR] [ERROR] Some problems were encountered while processing the POMs:

问题是,我的一些 Spring 引导应用程序依赖项是在我们的 Nexus 存储库中定义的,并且是在我的 maven settings.xml 中定义的镜像,这个过程不知道镜像配置,我找不到为 skaffold 配置它的方法。

我尝试在 skaffold.yml 中设置 settings.xml 如下

apiVersion: skaffold/v2beta11
kind: Config
build:
  artifacts:
  - image: myproject/myapp
  jib:
    args:
    -  --settings=C:\maven\conf\settings.xml
  tagPolicy:
  sha256: {}

有人知道如何让 'google.java.maven' 使用我的镜像配置吗?

感谢解答...

Skaffold 支持 Java 应用程序的三个开箱即用的构建器:Jib、Buildpacks 和 Docker。 Jib 构建器将最容易满足您的需求。

Jib 在您的主机上构建 运行(相对于在容器化环境中)。因为 Skaffold 的 Jib 构建器只是直接调用 Maven 或 Gradle,所以它们使用您的帐户设置而无需额外配置(特别是您的 $HOME/.m2/settings.xml$HOME/.m2/repository 中的工件缓存)。你上面的 skaffold.yaml 只需要一个小的缩进调整,它应该一切正常:

apiVersion: skaffold/v2beta11
kind: Config
build:
  artifacts:
  - image: myproject/myapp
    jib: {}
  tagPolicy:
    sha256: {}

您可以在 Skaffold examples 中看到一个工作示例。

Docker 和 Buildpacks 构建是 运行 在一个容器中:也就是说,源被 复制 到容器中。因此,您无法引用 构建上下文 之外的文件,例如您的 $HOME/.m2/settings.xml。您 可以 在源目录中创建一个模型 settings.xml 并引用该文件,然后使用环境变量或构建参数来传递用户名和密码。但它变得非常复杂。

我们对 allow mounting directories as volumes for the Buildpacks builder 有一个未解决的问题,我们应该能够对 Docker 构建器做同样的事情。如果您真的想使用 Buildpacks 或 Docker.

,该功能将使您更容易支持您的情况