Maven: POM pai não resolvível


101

Eu tenho meu projeto maven configurado como 1 projetos de shell e 4 módulos filhos. Quando tento construir o shell. Eu recebo:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR] The project module1:1.0_A0 (C:\module1\pom.xml) has 1 error
[ERROR] Non-resolvable parent POM: Failure to find shell:pom:1.0_A0 in http://nyhub1.ny.ssmb.com:8081/nexus/content/repositories/JBoss/ was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 5, column 11 -> [Help 2]

Se eu tento construir um módulo solitário, obtenho o mesmo erro, apenas substitua o módulo 1, por qualquer módulo que seja.

Faça com que todos façam referência ao pai em seus poms.

<parent>
    <artifactId>shell</artifactId>
    <groupId>converter</groupId>
    <version>1.0_A0</version>
</parent>

Aqui estão as partes relevantes do shell pom:

<groupId>converter</groupId>
<artifactId>shell</artifactId>
<version>1.0_A0</version>
<packaging>pom</packaging>
<name>shell</name>


<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

1
se alguém estiver interessado, adicionando <relativePath>..</relativePath>abaixo <parent></parent>funcionou para mim.
— kaptan

2
execute istomvn install -N & mvn install
— Se Song

O caminho relativo é para projetos não conformes e não uma "solução" quando a expectativa é um pom na pasta pai do módulo deve estar acessível.
— Rick O'Shea

No meu caso, foi por causa do erro de digitação no arquivo pom.xml.
— Oleksii Kyslytsyn

Todos os problemas possíveis resumidos: stackoverflow.com/a/62704660/6172857
— Sumit Badsara

Respostas:


94

Somente para referência.

As alegrias de Maven.

Colocar o caminho relativo dos módulos para ../pom.xml resolveu.

O parentelemento possui um relativePathelemento que você precisa apontar para o diretório do pai. O padrão é..


17
Sim. Usar o Maven requer que você saiba o que faz, tentativa e erro não o levarão muito longe. Por outro lado, existem várias boas referências disponíveis. Este é um .
— Nicola Musatti

6
Então você adicionou isso <relativePath>..</relativePath>abaixo <parent></parent>?
— Octavian

Obrigado, tentei por um tempo para resolver o problema. Eu peguei o caminho relativo de ../pom.xmlpara ../<parent folder>/pom.xml.
— Mario Kurzweil

Colocar o <relativePath> não resolveria necessariamente o problema se você estiver apontando para um repositório privado. Procure a resposta de Tomáš Záluský para uma explicação detalhada.
— Gi1ber7 de

Estou tentando estender meu arquivo pom principal para outro (para testes) no mesmo diretório (mesmo projeto). Mas isso não resolve esse erro. Alguma idéia de como consertar isso?
— Praneeth Peiris

38

Ele também pode ser corrigido colocando o settings.xmlarquivo correto no ~/.m2/diretório.


3
Exatamente isso resolveu meu problema, obrigado !!! Mas não colocando-o em algum diretório, mas apontando o Eclipse para ele em Preferências - Maven - Configurações do usuário.
— Brain

Resolveu meu problema também. Só tenho que ter certeza de que as configurações estão configuradas corretamente maven.repotambém ..
— Saran

21

O motivo alternativo também pode ser o artefato pai vem de um repositório que não é acessível a partir de pom.xmlum repositório normalmente privado. A solução foi fornecer esse repositório em pom.xml:

<repositories>
    <repository>
        <id>internal-repo</id>
        <name>internal repository</name>
        <url>https://my/private/repo</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

No meu caso o problema ficou ainda mais complicado devido ao Eclipse: o repositório estava ativo apenas no perfil especial ( <profiles><profile><id>activate-private-repo</id><repositories>...) e a GUI do Maven no Eclipse não permitia definir este perfil através de Ctrl+Alt+Patalho.

A solução foi declarar temporariamente o repositório fora do perfil (incondicionalmente), lançar o Alt+F5projeto de atualização Maven, ativar o perfil e colocar a declaração do repositório de volta no perfil. Este é um bug do Eclipse, não do Maven.


Mesma situação! Repo privado não adicionado ao pom.
— LoranceChen

4

POM pai não resolvível: Isso significa que você não pode resolver o repo pai.

Trun no modo de depuração:

[DEBUG] Reading global settings from **/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml**
[DEBUG] **Reading user settings from /Users/username/.m2/settings.xml**
[DEBUG] Reading global toolchains from /usr/local/Cellar/maven/3.5.4/libexec/conf/toolchains.xml
[DEBUG] Reading user toolchains from /Users/username/.m2/toolchains.xml
[DEBUG] Using local repository at /Users/username/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for /Users/username/.m2/repository
[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:

Porque o repo pai não faz parte da central maven. A solução é especificar um setting.xml em ~ m2 / para ajudar a resultar no POM pai. /Users/username/.m2/settings.xml

Nesse XML, pode ser necessário especificar as informações do repositório.


Impressionante ! Adicionar meus detalhes de repo nas configurações xml funcionou. Mas por que não está tirando do pom xml (que tem o mesmo repo adicionado)?
— smilyface

3

Basta adicionar <relativePath />para que o pai em pom fique assim:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
        <relativePath />
    </parent>

2
Isso se aplica apenas quando o pai não está na mesma estrutura de diretório, ou seja, em um repositório remoto.
— Ondra Žižka

2

verifique se você tem valores corretos nos POMs filhos

GroupId
ArtefactId
Version

No Eclipse, por exemplo, você pode pesquisá-lo: Eclipse: pesquisar pom pai


2

<relativePath>

Se você construir em um projeto filho, <relativePath>poderá ajudá-lo a resolver o problema pai.

instalar pom pai

Mas se você construir o projeto filho a partir de sua pasta, <relativePath>não funciona. Você pode installcolocar o pom pai em seu repositório local primeiro e, em seguida, construir o projeto filho.


1

Substitua 1.0_A0 por $ {project.version}

Execute o mvn uma vez. Isso fará o download de todos os repositórios necessários. Você pode voltar para 1.0_A0 após esta etapa.


Isso só funciona se o POM pai necessário tiver a mesma versão do POM do submódulo. Isso não é sempre o caso.
— Gerold Broser

0

Eu tive um problema semelhante no meu trabalho.

Construir o projeto pai sem dependência criou o arquivo parent_project.pom na pasta .m2.

Em seguida, adicione o módulo filho no POM pai e execute a construção do Maven.

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
</modules>

0

Adicionar uma dependência em

pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.8.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
</dependency>

0

Resolvi esse problema depois de uma longa tentativa, criei outro arquivo chamado "parent_pom.xml" no diretório de arquivos do módulo filho local e colei o conteúdo de parent_pom.xml, que está localizado remotamente, no recém-criado "parent_pom.xml " Funcionou para mim e a mensagem de erro desapareceu.


0

Dentro da tag de caminho relativo, faça o seguinte

<relative>{project_name}/pom.xml</relative>

e então RunAs-> Maven build

Funcionou para mim


-2

Eu tive o problema de que dois arquivos pom.xml de compilação de reator tinham o mesmo artefactId.


No meu caso, este módulo pai não estava na pasta pai, eu tive que adicionar o módulo filho <relativePath>
— ../parent-module-dir
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.