Java Docker构建上的不可解析父POM

Java Docker构建上的不可解析父POM,java,maven,spring-boot,docker,pom.xml,Java,Maven,Spring Boot,Docker,Pom.xml,我正试图从Docker文件中构建Docker映像,但不断收到一个错误,例如它找不到父级pom.xml,无法在Docker文件中执行maven命令并构建项目。 我到处看了看,你看到人们做的是添加到子对象pom.xml对父对象pom.xml的引用我尝试添加一个relativePath>/xml/relativePath>,但仍然不起作用 Maven多模块项目 [ DockerFile Child pom.xml(Web) 通信线路跟踪 感谢您的帮助,我不知道什么是wron或如何使构建工作正常。Mav

我正试图从Docker文件中构建Docker映像,但不断收到一个错误,例如它找不到父级
pom.xml
,无法在Docker文件中执行maven命令并构建项目。 我到处看了看,你看到人们做的是添加到子对象
pom.xml
对父对象pom.xml的引用我尝试添加一个
relativePath>/xml/relativePath>
,但仍然不起作用

Maven多模块项目 [

DockerFile Child pom.xml(Web) 通信线路跟踪
感谢您的帮助,我不知道什么是wron或如何使构建工作正常。

Maven是一种能够以声明方式管理项目依赖关系的工具。它通过标准化项目共享jar和pom文件(工件)的方式并使用Maven坐标来声明项目依赖关系来实现这一点(groupId、artifactId和version),然后在名为maven Central的jar和pom文件的大型公共maven存储库中查找

为了让您的jar/pom文件(比如您的core)作为maven工件进行管理,您需要将工件部署到maven Central(任何人都可以访问公共存储库)或私有存储库中的某个位置(甚至在internet上,可能还需要身份验证)。对于私有存储库,您需要包含您的私有存储库,以便您的maven执行不仅在maven Central中查找工件,而且在您的私有存储库中查找工件。您可以通过将以下内容添加到
settings.xml
文件中来实现此目的:


关系
一些你的用户名
有点过时了
...
关系
nexus发布
nexus发布
http://hostname_or_ip_address/content/repositories/releases
nexus第三方
nexus第三方
http://hostname_or_ip_address/content/repositories/thirdparty
nexus插件发布
nexus插件发布
http://hostname_or_ip_address/content/repositories/releases/
nexus插件第三方
nexus插件第三方
http://hostname_or_ip_address/content/repositories/thirdparty/
...

我注意到您的子
pom.xml
文件引用了一个自定义父模块。您需要确保父模块位于maven存储库(Nexus/Artifactory)中您提供了一个
settings.xml
文件,其中包含Docker容器的存储库设置,以便能够提取父pom。

然而,出于兴趣,为什么您希望容器运行maven构建?这可以由主机运行,您只需将
.jar
复制到容器中,使其更自动化,并且ot必须在主机上构建通常,像Jenkins这样的专用构建服务器用于此类任务,生成的人工制品用于构建容器,但用于本地开发,您的方式有效我理解您的意思,但如果寻找其他方式,如果有,项目中有依赖项,并且y应该可以通过构建一个web。jarI不确定我是否完全理解您的问题。请编辑您的评论我知道,解决方案是将您的
web
模块dockerize。您需要在容器中运行maven build,这增加了复杂性,因此您的容器承担了组装应用程序和作为运行时的双重角色。让我看看现在,它是如何运行的呢?您是否已将父pom部署到maven存储库中?这是正确的。如果愿意,您也可以将存储库作为Docker容器运行。当您选择Docker路线时,您必须确保两个Docker容器或在同一网络上。上次我检查了运行web Docker c时,您可以使用链接标志容器
FROM alpine/git as clone
WORKDIR /app
RUN git clone https://github.com/RicardoVargasLeslie/manager.git

FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app

COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src

RUN ./mvnw install -DskipTests

ENTRYPOINT ["java","-jar","/Web-0.0.1-SNAPSHOT.jar"]
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.imricki.manager</groupId>
        <artifactId>core</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>
    <artifactId>Web</artifactId>
    <name>Web</name>
    <description>Web Module</description>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.imricki.manager</groupId>
    <artifactId>core</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>Core</name>
    <description>Core Module</description>
    <packaging>pom</packaging>
docker build -t rest-api .
$ docker build -t rest-api .
Sending build context to Docker daemon  42.92MB
Step 1/11 : FROM alpine/git as clone
 ---> a1d22e4b51ad
Step 2/11 : WORKDIR /app
 ---> Using cache
 ---> e53f5b4941b5
Step 3/11 : RUN git clone https://github.com/RicardoVargasLeslie/manager.git
 ---> Using cache
 ---> 490b2afea22c
Step 4/11 : FROM openjdk:8-jdk-alpine as build
 ---> a3562aa0b991
Step 5/11 : WORKDIR /workspace/app
 ---> Using cache
 ---> 0b7c106319e9
Step 6/11 : COPY mvnw .
 ---> Using cache
 ---> 2c7ab0b79d25
Step 7/11 : COPY .mvn .mvn
 ---> Using cache
 ---> eb9ec36b737a
Step 8/11 : COPY pom.xml .
 ---> Using cache
 ---> 2296a5fbd6ae
Step 9/11 : COPY src src
 ---> Using cache
 ---> 022a609f4376
Step 10/11 : RUN ./mvnw install -DskipTests
 ---> Running in 897cff2e3c3b
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for com.imricki.manager:Web:[unknown-version]: Could not find artifact com.imricki.manager:core:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 10
 @
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project com.imricki.manager:Web:[unknown-version] (/workspace/app/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM for com.imricki.manager:Web:[unknown-version]: Could not find artifact com.imricki.manager:core:pom:0.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 5, column 10 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException
The command '/bin/sh -c ./mvnw install -DskipTests' returned a non-zero code: 1