J'essaie de configurer un projet Maven pour une application Spring Boot, mais lors de la tentative d'enregistrement du fichier pom.xml, le problème suivant se pose:
Erreur de construction du projet: POM parent non résolvable pour
io.javabrains.springbootquickstart: course-api: 0.0.1-SNAPSHOT: Pourrait pas trouvé un artefact
org.springframework.boot: printemps-boot-starter-parent: pom: $ {revision} dans central (https: // repo.maven.Apache.org/maven2) et 'parent.relativePath' pointe vers le mauvais POM local
Voici mon fichier pom.xml:
<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>
Résolu le problème ... Il y avait une petite erreur. Ce devrait être1.4.2.RELEASEau lieu de1.4.2 RELEASE. Il ne devrait pas y avoir d'espace entre RELEASE et 2. Ce petit point était à l'origine du problème.
D'où la révision sera remplacée?
Modifiez pom.xml
en spécifiant une version comme ci-dessous.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
Cela peut être dû au fichier pom du projet créé par l'initialisateur du printemps, comme ceci
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Cependant, sts est compatible avec la version "2.0.4.RELEASE", il suffit de faire ce changement
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
plus loin Maven -> Update Project
Ici :
<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}
sera interpolé par Maven (traduit) uniquement si Maven trouve une variable portant le nom revision
.
Mais revision
n’est pas un Maven construit dans des variables. Alors que les variables comme ${project.version}
et ${project.artifactId}
sont.
Donc, dans votre cas, vous devez déclarer ou transmettre explicitement la variable si vous souhaitez l’utiliser.
Par exemple, cela pourrait fonctionner en l'ajoutant:
<properties>
<revision>1.4.2 RELEASE</revision>
</properties>
Ou en exécutant maven tel que: mvn package -Drevision="1.4.2 RELEASE"
Vous pouvez trouver plus d'informations ici .
Notez qu'une propriété revision
semble avoir une signification trop large et n'aide pas à comprendre la signification de la propriété.
Un nom plus précis, tel que ${spring-boot-version}
, aurait plus de sens.