'parent.relativePath' aponta para minha com.mycompany: MyProject em vez de org.apache: apache - Por quê?

135

O que é verdade é que o diretório do projeto Solr está dentro do diretório pai do MyProject (mas não há nenhum módulo ou qualquer relação entre os dois, apenas a conveniência do FS). Eu tenho que colocá-lo para fora?

$ mvn -DskipTests clean install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.apache.lucene:lucene-solr-grandparent:pom:3.1-SNAPSHOT
[WARNING] 'parent.relativePath' points at com.mycompany:MyProject instead of org.apache:apache, please verify your project structure @ line 23, column 11
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 

de pom.xml:

<parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
  </parent>

$ pwd
/Users/simpatico/ws/MyProjectBaseDir/solr
simpatico
fonte

Respostas:

259

Adicione um vazio <relativePath> a <parent>para que ele resolva o pom pai dos repositórios.

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>8</version>
    <relativePath></relativePath>
  </parent>

Aqui está o documento relevante .

Esse recurso é apenas para aprimorar o desenvolvimento em uma finalização local desse projeto. Defina o valor como uma sequência vazia, caso deseje desativar o recurso e sempre resolva o POM pai nos repositórios.
O valor padrão é: ../pom.xml.

Raghuram
fonte
15
Acredite ou não, os avisos assustam algumas pessoas. Meu chefe acabou de me pedir para investigar por que estamos recebendo esse aviso e este post fez o meu dia.
Pierre
16
Os avisos não vêm caindo do céu. Há uma razão para isso. Adicionando um vazio <relativePath> </ relativePath> sem saber por que não é uma solução ....
Lawrence
1
Eu estou tentando construir o apache-spark. Esta solução não está funcionando no meu caso.
Javadba 31/10/2015
29
Se você não corrigir avisos, treine pessoas para ignorá-los.
Paul Jackson
4
IMHO <relativePath />parece melhor
Lu55
20

ignore o aviso, mova as fontes para fora do pai não relacionado ou insira o valor correto de para o elemento O problema é causado pelo valor padrão para o relativoPath, que é ../pom.xml, e esse valor padrão é injetado no seu pom efetivo, acionando o aviso.

mkleint
fonte
Suspeito que esse comportamento padrão esteja causando outros problemas. O que você quer dizer com 'inserir o elemento'?
Simpatico 14/05
Eu quis dizer que você deve escrever o valor correto para o elemento <relativePath> com base em onde seu pom pai é relativo ao pom atual.
mkleint
1
O caminho para org.apache:apacheprovavelmente não está localmente no computador (exceto no repositório .m2 local). Nesses casos, um relativoPath vazio deve ser especificado.
Simon Forsberg
2

Essa mensagem pode ser causada por um pom.xml no diretório pai em relação ao seu projeto atual. O pom no diretório pai não corresponde à configuração project.parent do pom atual.

leo
fonte
1
Correto, mas sua resposta não explica a solução. O caminho para org.apache:apacheprovavelmente não está localmente no computador (exceto no repositório .m2 local). Nesses casos, um relativoPath vazio deve ser especificado.
Simon Forsberg
Esta foi a causa no meu caso. Esse aviso começou a aparecer um dia sem motivo aparente (mesma versão do maven, mesmo código do projeto). Finalmente, notei um arquivo 'pom.xml' logo fora da pasta do projeto, que estava sendo buscado pelo maven.
Sudeep
2

Eu tenho um caso de franja. Um estojo de dedo gordo da minha parte.

Meu pai pom teve isso:

<?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>
    <groupId>com.mygroup </groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>pom-parent</name>

e meu (filho) pom

<parent>
    <groupId>com.mygroup</groupId>
    <artifactId>pom-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../pom-parent/pom.xml</relativePath>
</parent>  

A identificação do meu grupo nos meus pais tinha um espaço para dedos no final do nome. "com.mygroup" em vez do "com.mygroup" correto.

Por causa desse erro de dedo gordo ........ os nomes de "groupId" não correspondiam ... e eu recebi o erro.

Aka, verifique se há erros nos dedos antes de ir a muitos extremos para resolver.

erro que recebi ao pesquisar na Internet

"Erro na criação do projeto: 'parent.relativePath' of POM" "aponta para" "verifique a estrutura do seu projeto"

granadaCoder
fonte
1

Acho que você perdeu a <relativePath>tag na pergunta. Estou dizendo isso porque, sem ele, este erro não ocorrerá. Dito isto,

A linha que você terá que se concentrar é a declaração de aviso abaixo.

'parent.relativePath' aponta para com.mycompany: MyProject em vez de org.apache: apache

Diz claramente que o caminho relativo da tag no seu módulo aponta para um arquivo pom que possui ID de artefato diferente em comparação ao especificado

Isso ocorre porque há uma incompatibilidade entre o artifactIdseu parent/pom.xmle o que artifactIdvocê mencionou na <parent>tag de module/pom.xml. Para evitar o aviso, altere o <parent>no seu module/pom.xmlcomo mostrado abaixo.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
fonte
2
O caminho para org.apache:apacheprovavelmente não está localmente no computador (exceto no repositório .m2 local). Nesses casos, um relativoPath vazio deve ser especificado.
Simon Forsberg