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.