wake-up-neo.com

Nicht auflösbares übergeordnetes POM in Spring Boot

Ich versuche, ein Maven-Projekt für eine Spring Boot-Anwendung einzurichten, aber beim Versuch, die Datei pom.xml zu speichern, erhalte ich folgendes Problem:


Projekterstellungsfehler: Nicht auflösbares übergeordnetes POM für
io.javabrains.springbootquickstart: course-api: 0.0.1-SNAPSHOT: Könnte Artefakt nicht finden
org.springframework.boot: spring-boot-starter-parent: pom: $ {revision} in zentral (https: // repo.maven.Apache.org/maven2) und 'parent.relativePath' zeigt auf falsches lokales POM

Hier ist meine pom.xml-Datei:

<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>io.javabrains.springbootquickstart</groupId>
  <artifactId>course-api</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>Java Api course</name>


 <parent>
    <!-- Your own application should inherit from spring-boot-starter-parent -->
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2 RELEASE</version>
  </parent>



 <dependencies>
   <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
 </dependencies>
</project>
4
Kshitiz Sharma

Das Problem wurde gelöst .. Es gab einen kleinen Fehler. Es sollte1.4.2.RELEASEanstelle von1.4.2 RELEASEsein. Zwischen RELEASE und 2 sollte kein Leerzeichen stehen. Dieser kleine Punkt verursachte das Problem.

2
Kshitiz Sharma

Von wo wird die Revision ersetzt?

Ändern Sie pom.xml, indem Sie eine Version wie unten angegeben angeben.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
</parent>
3
Alien

Dies kann daran liegen, dass der Frühling-Initialisierer eine Projekt-Pom-Datei wie diese erstellt hat 

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent> 

Sts ist jedoch mit der Version "2.0.4.RELEASE" kompatibel. Nehmen Sie diese Änderung vor

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

weitere Maven -> Projekt aktualisieren

2
Niraj Jha

Hier :

<parent>
  <!-- Your own application should inherit from spring-boot-starter-parent -->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>${revision}</version>
</parent>

${revision} wird nur dann von Maven interpoliert (dh übersetzt), wenn Maven eine Variable mit dem Namen revision findet.
Aber revision ist keine in Maven eingebaute Variable. Während Variablen wie ${project.version} und ${project.artifactId} sind. 

In Ihrem Fall müssen Sie also die Variable explizit deklarieren oder übergeben, wenn Sie sie verwenden möchten.

Zum Beispiel könnte es funktionieren, indem Sie es hinzufügen:

<properties>
  <revision>1.4.2 RELEASE</revision>
</properties>

Oder indem Sie maven wie folgt ausführen: mvn package -Drevision="1.4.2 RELEASE"

Weitere Informationen finden Sie hier

Beachten Sie, dass eine revision-Eigenschaft eine zu weit gefasste Bedeutung zu haben scheint und die Bedeutung der Eigenschaft nicht zu verstehen hilft.
Ein genauerer Name wie ${spring-boot-version} wäre sinnvoller.

1
davidxxx