3

当我将 spring-boot-starter-parent 与本地存储库和 jgitver 结合使用时,出现以下错误:

[ERROR]   The project tmplsvcpkg:TMPL_SVC_NAME-parent:0.0.0-27-a592e4fb-feature_gitlabci-dirty (/home/user/git/service-template/pom.xml) has 1 error
[ERROR]   Non-resolvable parent POM for org.springframework.boot:spring-boot-starter-parent:[unknown-version]: Could not find artifact org.springframework.boot:spring-boot-dependencies:pom:0.0.0-27-a592e4fb-feature_gitlabci-dirty in internal-repository (https://mvnrepo) @ org.springframework.boot:spring-boot-starter-parent:[unknown-version], /home/user/git/service-template/.m2/repository/org/springframework/boot/spring-boot-starter-parent/2.2.0.RELEASE/spring-boot-starter-parent-2.2.0.RELEASE.pom, line 3, column 11 -> [Help 2]

注意spring-boot-starter-parent 的unknown-version和 spring-boot- dependencies 的 0.0.0-27-a592e4fb-feature_gitlabci-dirty。0.0.0-27-...版本是jgitver计算出来的版本。看起来版本分辨率以某种方式搞砸了。如果我将本地存储库更改为项目之外的任何目录,它就会重新开始工作。如果我抑制 jgitver,它会再次开始工作。如果我在我的项目中更深入地定义本地存储库(如 maven.repo.local=x/y/z/.m2/repository,错误仍然存​​在。

我以这种方式在 pom.xml 中定义了父级:

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

我以这种方式运行我的 Maven:

mvn compile -Dmaven.repo.local=.m2/repository -U

如果我添加 jgitver.skip=true,一切正常。

我怀疑这可能与 spring-boot-starter 父级将其父级(spring-boot-dependencies)定义为相对于其位置的事实有关:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.0.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>

有没有人知道为什么会发生这种情况以及如何解决?

4

1 回答 1

2

事实证明这是一个众所周知的问题,并且可以通过插件的特定配置来解决(您必须在插件配置中排除 .m2 目录)。更多细节在这个问题:

https://github.com/jgitver/jgitver-maven-plugin/issues/60

于 2020-04-09T14:40:00.850 回答