繁体   English   中英

SpringBoot中不可解析的父POM

[英]Non-resolvable parent POM in SpringBoot

我正在尝试为 Spring Boot 应用程序设置一个 Maven 项目,但是在尝试保存 pom.xml 文件时,我遇到了以下问题:


项目构建错误:不可解析的父 POM
io.javabrains.springbootquickstart:course-api:0.0.1-SNAPSHOT:找不到工件
org.springframework.boot:spring-boot-starter-parent:pom:${revision} 在中央 (https://repo.maven.apache.org/maven2) 和 'parent.relativePath' 指向错误的本地 POM

这是我的 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>

这可能是因为 spring 初始化程序创建了这样的项目 pom 文件

<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 与版本“2.0.4.RELEASE”兼容,只需进行此更改

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

进一步 Maven -> 更新项目

解决了这个问题。 有一个小错误。 它应该是1.4.2.RELEASE而不是1.4.2 RELEASE RELEASE 和 2之间不应有空格。 这个小点导致了这个问题。

从哪里修订将被替换?

通过指定如下所示的任何版本来修改pom.xml

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

这里 :

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

仅当 Maven 找到具有revision名称的变量时, ${revision}才会由 Maven 插入(即翻译)。
但是revision不是内置变量的 Maven。 而变量${project.version}${project.artifactId}是。

所以在你的情况下,如果你想使用它,你必须显式声明或传递变量。

例如,它可以通过添加它来工作:

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

或者通过运行 maven 例如: mvn package -Drevision="1.4.2 RELEASE"

您可以在此处找到更多信息。

请注意, revision属性的含义似乎过于宽泛,无助于理解属性含义。
更精确的名称,例如${spring-boot-version}会更有意义。

代替

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.2 RELEASE</version>
</parent>

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

检查您的代理设置。 如果您使用的公司 PC 已经为浏览器配置了代理,但尚未为您的 IDE 或 maven 配置代理,您可能可以输入与浏览器相同的信息。 例如,您可以通过打开浏览器的网络设置 -> LAN 设置,然后从输入字段中给出的地址下载 proxy.pac 文件来找到它们。 该文件是人类可读的。

之后,您可能仍需要通过以下任一方式处理 SSL 错误

对我来说,实际上 AntiVirus 正在我的系统中工作。 所以,我已经禁用了一个小时并将我的版本更改为 2.0.4.RELEASE 并且它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM