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