代码之家  ›  专栏  ›  技术社区  ›  tm1701

简单git项目的maven发布插件-错误:不是工作副本

  •  1
  • tm1701  · 技术社区  · 7 年前

    在使用Git(实验室)时,如何使用Maven“Maven发布插件”对简单项目执行“发布”?

    我正在开发/功能分支,最后我将更新合并到“主”分支。我猜,然后“发布”插件开始发挥作用。对的

    在我的文件中,我称之为:

    sh 'mvn release:prepare release:perform'
    

    在尝试许多选项时,我不断遇到以下错误:

    The svn command failed. 
    [ERROR] Command output:
    [ERROR] svn: E155007: '..workspace/project/pom.xml' is not a working copy
    

    失败的命令是:

    [INFO] Executing: /bin/sh -c cd /var/jenkins_home/workspace/jenkins-testing-releasing && svn --non-interactive commit --file /tmp/maven-scm-1557766606.commit --targets /tmp/maven-scm-8208798121252708517-targets
    [INFO] Working directory: /var/jenkins_home/workspace/jenkins-testing-releasing
    

    奇怪,因为我不跟SVN合作。

    这就是我到目前为止所做的:

    <project ...
        <artifactId>jenkinstesting</artifactId>
        <version>0.1-SNAPSHOT</version>
        <scm>
            <connection>scm:git:git@gitlab.com:user/project.git</connection>
            <developerConnection>scm:git:git@gitlab.com:user/project.git</developerConnection>
            <tag>rel1</tag>
        </scm>
    

        <build>
            <plugins ... 
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.2.1</version>
                    <executions>
                        <execution>
                            <id>default</id>
                            <goals>
                                <goal>perform</goal>
                            </goals>
                            <configuration>
                                <pomFileName>pom.xml</pomFileName>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
    

    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>versions-maven-plugin</artifactId>
        <version>2.1</version>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <version>2.5.3</version>
    </plugin>
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   tm1701    7 年前

    正如一些帖子所建议的,使用Jgitflow Maven插件(确实)更好。甚至项目也改成了这个插件。因此,没有理由坚持使用Maven发布插件。回首往事,, 我终于同意了这个建议 并继续使用Jgitflow插件。

    • 我们有一个“发布”分支,具有正确的版本和构建的产品(v0.5.0);
    • 我们为下一版本(v0.6.0-SNAPSHOT)准备了一个“开发”分支;
    • 我们有一个“主”分支作为备份(v0.5.0)。

    需要采取哪些行动?

    • 使用该发布分支构建最终产品。您还可以使用该版本的标记构建Docker图像。您可以向该Docker图像添加其他标签。
    • 将分支合并到“主”分支中。因此,您可以为生产问题提供备份。
    • 确定下一版本“开发”分支的编号。这取决于您想要的是主要版本、次要版本还是补丁版本。
    • 用新版本更新“开发”分支。

    def mavenHome = tool 'Maven Latest'
    def nextVersion = // determine this on the requested major/minor/patch release
    sh "${mavenHome}/bin/mvn clean -B jgitflow:release-start jgitflow:release-finish " +
            "-DskipTests " +
            "-DallowUntracked=true " +
            "-DpushReleases=true " +
            "-DscmCommentPrefix=[RELEASE]- " +
            "-DenableSshAgent=true " +
            "-DreleaseVersion=${nextVersion}"
    

    准备工作是:当使用GIT流时,您可以通过pull请求将您的特性分支更改合并到开发分支中。