java Maven仅在Jenkins中设置版本错误:更改记录仅支持[]格式

gk7wooem  于 2023-04-28  发布在  Java
关注(0)|答案(2)|浏览(165)

尝试了不同的版本,但知道availability- 3。0.0似乎是最新的:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
            <preparationGoals>clean install</preparationGoals>
        </configuration>
    </plugin>
</plugins>

它在我的本地工作,但在Jenkins它不是:

并且无法看到有关此错误的大量必要信息:Only [] formats are supported for change recordings
让我知道如果我看错了地方。
谢谢!

xu3bshqb

xu3bshqb1#

您的问题似乎是由Jenkins上过时的Maven版本引起的。
maven-versions-plugin使用JSR-330进行依赖注入,例如参见none-recorderxml-recorder源代码:

@javax.inject.Named("none")
public class ChangeRecorderNull implements ChangeRecorder {

@javax.inject.Named("xml")
public class ChangeRecorderXML implements ChangeRecorder {

但在JSR-330文档中明确指出:
如果你想使用JSR-330,你必须明白你的代码与Maven 3不兼容。0.x,但仅适用于Maven 3。1.0及以后尽管JSR-330从Maven 3开始就在核心中可用。0-beta-3,它只在Maven 3中提供给插件和扩展。1.0(更多详细信息请参见MNG-5343)。
@Named注射不起作用时,您应该看到以下症状:

public abstract class AbstractVersionsUpdaterMojo extends AbstractMojo {
    ...
    @Inject
    protected AbstractVersionsUpdaterMojo(
            RepositorySystem repositorySystem,
            org.eclipse.aether.RepositorySystem aetherRepositorySystem,
            Map<String, Wagon> wagonMap,
            Map<String, ChangeRecorder> changeRecorders // <<<< EMPTY MAP INJECTED FOR MAVEN < 3.1
    ) {
        this.repositorySystem = repositorySystem;
        this.aetherRepositorySystem = aetherRepositorySystem;
        this.wagonMap = wagonMap;
        this.changeRecorders = changeRecorders;
    }
    ...
    protected ChangeRecorder getChangeRecorder() throws MojoExecutionException {
        ChangeRecorder changeRecorder = changeRecorders.get(changeRecorderFormat);
        if (changeRecorder == null) {
            throw new MojoExecutionException(
                    "Only " + changeRecorders.keySet() + " formats are supported for change recordings");
        }
        return changeRecorder;
    }

我强烈推荐使用Maven Wrapper来保持不同环境中构建的一致性。

6psbrbz9

6psbrbz92#

在我们的Jenkins build中设置它:

发件人:

-U clean install versions:set -DnewVersion=${version}

收件人:

-U clean install build-helper:parse-version org.codehaus.mojo:versions-maven-plugin:2.4:set -DnewVersion=${version}

相关问题