[maven] mvn release : pom.xml 변경 사항을 커밋하지 않도록 준비

Maven 으로 Jenkins 플러그인 ( stashNotifier ) 을 릴리스하려고하는데 릴리스 플러그인 에 문제가 있습니다.

mvn clean release:prepare

오류없이 완료되지만 로컬 git 저장소에서 변경된 pom.xml을 커밋하지 못합니다. 버전 1.0.2를 릴리스하려는 분기의 HEAD에 태그를 지정하더라도. 이것은 릴리스를 준비하기 전에 내 로컬 지점의 모습입니다.

* df60768 (HEAD, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md

그리고 이것은 이후의 모습입니다

* df60768 (HEAD, tag: stashNotifier-1.0.2, origin/develop, develop) upgraded parent pom to version 1.498
* 792766a added distribution management section to pom.xml and amended readme.md

불행히도 pom.xml에는 이미 다음 개발 버전이 포함되어 있으므로 후속 릴리스가 해당 스냅 샷 버전을 릴리스합니다.

maven의 명령 출력에서 ​​거의 git commit 명령을 생략 한 것처럼 보입니다.

[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Tagging release with the label stashNotifier-1.0.2...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git tag -F /var/folders/dr/xxbtyycs1z9dl2_snlj87zrh0000gn/T/maven-scm-678409272.commit stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git push git@github.com:jenkinsci/stashnotifier-plugin.git stashNotifier-1.0.2
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git ls-files
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Transforming 'Stash Notifier'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git add -- pom.xml
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Executing: /bin/sh -c cd /Users/gruetter/Dropbox/stashNotifier && git status
[INFO] Working directory: /Users/gruetter/Dropbox/stashNotifier
[INFO] Release preparation complete.

maven 3.0.5를 실행하고 있습니다 (–dry-run 또는 -DpushChanges = false 제외). 내 효과적인 pom의 관련 (내 생각에) 부분은 다음과 같습니다.

[...]

<scm>
   <connection>scm:git:git://github.com/jenkinsci/stashnotifier-plugin.git</connection>
   <developerConnection>scm:git:git@github.com:jenkinsci/stashnotifier-plugin.git</developerConnection>
   <url>https://github.com/jenkinsci/stashnotifier-plugin</url>
</scm>

[...]

<distributionManagement>
   <repository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>maven.jenkins-ci.org</id>
      <url>http://maven.jenkins-ci.org:8081/content/repositories/snapshots</url>
   </snapshotRepository>
   <site>
     <id>github-pages</id>
     <url>gitsite:git@github.com/jenkinsci/maven-site.git:plugin-parent/stashNotifier</url>
   </site>
</distributionManagement>

[...]

<properties>
   [...]
   <maven-release-plugin.version>2.2.2</maven-release-plugin.version>
   [...]
</properties>

[...]

<build>
   [...]
   <pluginManagement>
      <plugins>
         [...]
         <plugin>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.2.2</version>
         </plugin>
         [...]
   </pluginManagement>

   [...]

   <plugins>
      [...]
      <plugin>
         <artifactId>maven-release-plugin</artifactId>
         <version>2.2.2</version>
         <configuration>
            <goals>deploy</goals>
         </configuration>
      </plugin>
      [...]
   </plugins>
</build>

내가 도대체 ​​뭘 잘못하고있는 겁니까? 귀하의 통찰력에 미리 감사드립니다!



답변

릴리스 플러그인 버전이 아닌 git scm 공급자 종속성을 업데이트하여 내 편 (maven 3.0.5 실행)에서 문제를 해결했습니다.

<build>
  <plugins>
    <plugin>
      <artifactId>maven-release-plugin</artifactId>
      <version>2.4.2</version>
      <dependencies>
        <dependency>
          <groupId>org.apache.maven.scm</groupId>
          <artifactId>maven-scm-provider-gitexe</artifactId>
          <version>1.8.1</version>
        </dependency>
       </dependencies>
      </plugin>
    </plugins>
</build>

git scm 1.8.1 버전은 git 커밋을 올바르게 만듭니다 (준비 및 롤백 목표로 테스트 됨).

편집 : 환경에 따라 다른 버전의 maven-release-plugin 및 maven-scm-provider-gitexe가 필요할 수 있습니다. 더 많은 논의를 위해 코멘트를보십시오.


답변

나는 같은 문제에 부딪쳤다. #richnou의 해결책이 나를 위해 일한다 (SCM 의존성 업그레이드). 이 문제에 대해 생성 된 문제가 있습니다. 아래 링크를 참조하십시오. 문제는 “git status”가 플러그인을 구문 분석 할 수없는 현지화 된 메시지를 반환하는 새 버전의 Git과 관련이 있습니다. 근본 원인입니다. 이 문제는 git --porcelain옵션 (쉽게 구문 분석 가능한 출력을 반환해야 함 )을 사용하여 git scm (1.8.1 버전)에서 수정되었지만,이 수정 후 저장소 루트 (scm 태그)가 작업 디렉토리가 아닌 경우 또 다른 문제가 발생했습니다. release:prepare여전히 실패합니다. 이 문제는 Git SCM의 스냅 샷 버전 (아직 출시되지 않음)에서 수정 된 것으로 보입니다. scm태그를 자식 pom 에 복사하면이 문제를 해결할 수 있습니다 .

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix


답변

첫째, richnou와 vasekt의 답변이 내 문제를 해결했습니다. 언급 된 것보다 최신 버전 때문에이 답변을 게시 할 것이라고 생각했으며이를 포함하여 추가 예제를 제공하는 것이 좋을 것이라고 생각했습니다.

스냅 샷 문제를 일으키는 maven scm 종속성 버전을 지정하지 않고 Git 3.3.x에서 maven 릴리스 플러그인 2.3.2를 실행하고있었습니다. 나를 위해 나는 다음과 같은 maven 릴리스 플러그인과 scm 종속성 모두에 대해 당시 최신 버전으로 업그레이드했습니다.

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.3</version>
   <dependencies>
      <dependency>
         <groupId>org.apache.maven.scm</groupId>
         <artifactId>maven-scm-provider-gitexe</artifactId>
         <version>1.9.5</version>
      </dependency>
   </dependencies>
</plugin>

이것은 나를 위해 잘 작동했으며 릴리스 버전이 릴리스 저장소에 제대로 업로드되었으며 스냅 샷도 예상대로 작동했습니다.


답변

위의 솔루션이 효과가 없었기 때문에 아마도 이것을 읽고있을 것입니다. 나는 같은 문제가 있었고 여기에 언급 된 모든 것을 시도했습니다. 내 버전은 다음과 같습니다.maven-release-plugin 2.5git 1.7.9

나를 위해 일한 솔루션 은 maven-release-plugin 을 버전 2.3.2다운 그레이드 했습니다.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <autoVersionSubmodules>true</autoVersionSubmodules>
            </configuration>
        </plugin>
    </plugins>
</build>


답변

maven-release-plugin2.5.2로 업그레이드하는 것이 도움이되었습니다 (2.5로 업그레이드하는 것은 도움이되지 않았습니다. 일부 사용자에게는 작동하지만 시스템의 다른 최신 소프트웨어에 따라 모든 사람에게는 작동하지 않을 수 있음). 나는 그것이 자동으로 새로운 공급자를 끌어 온다고 믿는다.


답변

나는 방금이 같은 문제에 부딪 쳤고 다른 답변과 의견에서 릴리스 플러그인 자체의 버그 일 가능성이 있다고 생각했습니다.

제 경우에는 다음과 같이 구성된 새롭고 거의 빈 프로젝트에서 git과 함께 플러그인 버전 2.4를 사용하고있었습니다.

my-repo.git/
  module-parent/     # running the release from here
  (module-child-1/)  # except I hadn't created it yet
  (module-child-2/)  # except I hadn't created it yet

(이 프로젝트의 소스 코드는 문제를 해결하기 전에 여기에서 볼 수 있습니다 : 동일한 문제가있는 내 프로젝트 .)

maven-release-plugin : 2.4.1 에 대한 릴리스 노트를 살펴보면 MRELEASE-830이 문제를 해결 한 것처럼 보였습니다.

나는 확실하지가 실제로 있다면 해요 이었다 문제가 있지만, 플러그인의 2.4.1에 내 프로젝트를 업그레이드하는 것은 나를 위해 그것을 해결 . 문제가 해결되기를 바랍니다.


답변

cygwin + maven + git을 사용할 때 이와 동일한 문제가 발생했습니다. 오류가 표시되지 않았지만 pom 변경 사항을 커밋하려고 시도하지 않았습니다 git status.

[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Tagging release with the label portal-automation-0.3.9...
[INFO] Executing: cmd.exe /X /C "git tag -F C:\cygwin64\tmp\maven-scm-1212196933.commit portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git portal-automation-0.3.9"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git ls-files"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Transforming 'portal-automation'...
[INFO] Not removing release POMs
[INFO] Checking in modified POMs...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

보시다시피 오류가 없으며 상태를 확인한 후 커밋하지 않았습니다. 그러나 대신 Windows 명령 프롬프트에서 실행할 때 :

...
[INFO] Executing: cmd.exe /X /C "git add -- pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git status"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git commit --verbose -F C:\Users\ltheisen\AppData\Local\Temp\maven-scm-2030091036.commit pom.xml"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git symbolic-ref HEAD"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Executing: cmd.exe /X /C "git push git@barrel.mitre.org:org-mitre-caasd/portal-automation.git master:master"
[INFO] Working directory: C:\Users\ltheisen\git\caasd-portal-automation
[INFO] Release preparation complete.

상태를 확인한 후 commit 한 것을 알 수 있습니다. 이것이 당신의 문제인지 확실하지 않지만 저에게 효과적이었습니다.

이것은 msysgit을 설치해야 함을 의미합니다.