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>
Vai
fonte
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 é..

Vai
fonte
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.

user1747134
fonte
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.

Tomáš Záluský
fonte
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.

Wu Yongchao
fonte
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>
stakowerflol
fonte
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

bengala
fonte
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.

Falcão
fonte
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.

Prasanth Pennepalli
fonte
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>
Prabhu
fonte
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>
Siva
fonte
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.

Ozan Apaydın
fonte
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

Sanket Dhumal
fonte
-2

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

Benez
fonte
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