'parent.relativePath' apunta a mi com.mycompany: MyProject en lugar de org.apache: apache - ¿Por qué?

135

Lo que es cierto es que el directorio del proyecto Solr está dentro del directorio padre de MyProject (pero no hay ningún módulo ni ninguna relación entre los 2, solo la conveniencia de FS). ¿Tengo que colocarlo?

$ 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
fuente

Respuestas:

259

Agregue un vacío <relativePath> para <parent>que resuelva el pom padre de los repositorios.

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

Aquí está el documento relevante .

Esta característica es solo para mejorar el desarrollo en un proceso de pago local de ese proyecto. Establezca el valor en una cadena vacía en caso de que desee deshabilitar la función y siempre resuelva el POM principal desde los repositorios.
El valor por defecto es: ../pom.xml.

Raghuram
fuente
15
Lo creas o no, las advertencias asustan a algunas personas. Mi jefe me pidió que investigara por qué recibimos esta advertencia y esta publicación me alegró el día.
Pierre
16
Las advertencias no se caen de los cielos. Hay una razón para ello. Agregar un <relativePath> </relativePath> vacío sin saber por qué no es una solución ...
Lawrence
1
Estoy tratando de construir apache-spark. Esta solución no funciona en mi caso.
javadba
29
Si no arreglas las advertencias, entrenas a las personas para que ignoren las advertencias.
Paul Jackson
44
En mi humilde opinión se <relativePath />ve mejor
Lu55
20

ignore la advertencia, mueva las fuentes fuera del elemento primario no relacionado o ingrese el valor correcto de al elemento. El problema es causado por el valor predeterminado de relativePath que es ../pom.xml y ese valor predeterminado se inyecta en su pom efectivo, lo que desencadena la advertencia.

mkleint
fuente
Sospecho que este comportamiento predeterminado está causando otros problemas. ¿Qué quieres decir con 'entrar en el elemento'?
simpatico
Quise decir que debería escribir el valor correcto para el elemento <relativePath> en función de dónde está su pom padre en relación con el pom actual.
mkleint
1
La ruta org.apache:apacheprobablemente no esté localmente en la computadora (excepto en el repositorio local .m2). En tales casos, se debe especificar una ruta de acceso relativa vacía .
Simon Forsberg
2

Ese mensaje puede ser causado por un pom.xml en el directorio principal relativo a su proyecto actual. El pom en el directorio padre no coincide con la configuración project.parent del pom actual.

León
fuente
1
Correcto, pero su respuesta no explica la solución. La ruta org.apache:apacheprobablemente no esté localmente en la computadora (excepto en el repositorio local .m2). En tales casos, se debe especificar una ruta de acceso relativa vacía .
Simon Forsberg
Esta fue la causa en mi caso. Esta advertencia comenzó a aparecer un día sin razón aparente (misma versión de Maven, mismo código de proyecto). Finalmente noté un archivo 'pom.xml' justo fuera de la carpeta del proyecto, que estaba siendo recogido por maven.
sudeep
2

Tengo un caso marginal. Un estuche grueso de mi parte.

Mi padre pom tenía esto:

<?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>

y mi (niño) pom

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

La identificación de mi grupo en mis padres tenía un espacio grueso para los dedos al final del nombre. "com.mygroup" en lugar del correcto "com.mygroup".

Debido a este error de dedo gordo ........ los nombres de "groupId" no coincidían ... y obtuve el error.

También, verifique si hay errores de dedos gordos antes de ir a demasiados extremos para resolver.

error que recibí para buscar en internet

"Error de compilación del proyecto: 'parent.relativePath' de POM" "apunta a" "verifique la estructura de su proyecto"

granadaCoder
fuente
1

Creo que te has perdido el <relativePath> etiqueta en la pregunta. Lo digo porque, sin él, este error no surgirá. Habiendo dicho eso,

La línea que tendrá que concentrarse es la siguiente declaración de advertencia.

'parent.relativePath' apunta a com.mycompany: MyProject en lugar de org.apache: apache

Dice claramente que la ruta relativa de la etiqueta en su módulo apunta a un archivo pom que tiene un ID de artefacto diferente en comparación con lo especificado

Esto se debe a que hay una falta de coincidencia entre artifactIdsu parent/pom.xmly el artifactIdque ha mencionado en la <parent>etiqueta de module/pom.xml. Para evitar la advertencia, cambie el <parent>en su module/pom.xmlcomo se muestra a continuación.

  <parent>
    <groupId>com.mycompany</groupId>
    <artifactId>MyProject</artifactId>
    <version>8</version>
    <relativePath>path-to-your-parent-pom.xml</relativePath>
  </parent>
Raja Anbazhagan
fuente
2
La ruta org.apache:apacheprobablemente no esté localmente en la computadora (excepto en el repositorio local .m2). En tales casos, se debe especificar una ruta de acceso relativa vacía .
Simon Forsberg