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


81

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>

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


불행히도 귀하의 설명과 관련된 오류 메시지가 표시되지 않습니다. 표시되는 오류 메시지를 표시 할 수 있습니까?
khmarbaise 2013 년

2
그게 문제입니다. 오류 메시지가 전혀 없습니다. 출력의 특정 섹션에 관심이 있습니까? (여러 페이지 maven 명령 줄 출력을 추가하여 질문이
부풀어 오르는

방금 똑같은 문제가 발생하여 maven-release-plugin 버전 2.4로 업데이트하여 해결했습니다.
brk3 2013 년

나는 또한 같은 문제가 있었지만 버전 2.4에서 2.3.2로 다운 그레이드하여 수정했습니다. 그림을 이동.
Greg Case

2
나도 문제가 있었지만 2.4.1에서 2.5.1로 업그레이드하면 문제가 해결되었습니다.
John Fear

답변:


95

릴리스 플러그인 버전이 아닌 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가 필요할 수 있습니다. 더 많은 논의를 위해 코멘트를보십시오.


1
이것은 maven-release-plugin 2.4.2로 내 자식 문제를 해결했습니다. 아주 좋아.
kevinarpe 2014

3
@BumbleGee,이 답변을 수락하는 것을 고려해야합니다!
ericbn 2014 년

2
<artifactId> maven-release-plugin </ artifactId> <version> 2.5.2 </ version>로 수정되지 않았으며 maven-scm의 최신 릴리스 버전 (1.9.4)에 대한 maven-release-plugin 종속성을 정의하는 경우 -provider-gitexe. release-plugin dep ..를 1.8.1로 변경했고 모든 것이 잘 작동했습니다.
Tobias Hochgürtel

3
두 번째 @ TobiasHochgürtel입니다. 2.5.2 및 1.9.4의 콤보에는 여전히 버그가 있습니다. 2.5.2 및 1.8.1은 괜찮아 보입니다.
kenny

4
POM의 변경 사항이 Maven 3.3.1, maven-release-plugin 2.4.1 및 maven-scm-provider-gitexe 1.9에서 커밋되지 않았다는 문제가 여전히 발생했습니다. maven-release-plugin 2.5.3 및 maven-scm-provider-gitexe 1.9.4로 업데이트하면 문제가 해결되었습니다.
Sven Ackermann

17

나는 같은 문제에 부딪쳤다. #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


나는 또한 같은 문제가 있었다. 나는 maven 3.2.1 및 git 1.9.1을 사용했습니다. 릴리스 플러그인을 2.5로 업데이트하는 것만으로는 pom이있는 디렉토리가 git 루트가 아니기 때문에 작동하지 않았습니다. richnou가 제안했듯이 maven-scm-provider-gitexe를 1.9.2의 최신 버전으로 업데이트하여 문제를 해결했습니다.
Chathurika Sandarenu 2014

9

첫째, 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>

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


2
제 경우에는 maven-release-plugin을 2.5.3으로 업그레이드하기 만하면되었습니다. gitexe 종속성을 지정할 필요가 없습니다.
colini

1
Maven 3.5.2, Maven-release-plugin 2.5.3 + provider 1.9.5는 mvn release : prepare for me 후 pom을 커밋하지 않습니다. 하지만 공급자 1.8.1은 그렇지 않습니다.
Avec

위의 내 의견을 업데이트하십시오. 1.8.1은 단일 pom 프로젝트 커밋에는 작동하지만 다중 모듈 프로젝트에는 작동하지 않습니다.
Avec

9

위의 솔루션이 효과가 없었기 때문에 아마도 이것을 읽고있을 것입니다. 나는 같은 문제가 있었고 여기에 언급 된 모든 것을 시도했습니다. 내 버전은 다음과 같습니다.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>

4
나는 maven-release-plugin-2.3.2git v1.9.3을 가지고 있었고 maven-release-plugin-2.5그것을 수정하기 위해 업그레이드 했습니다.
Sean Connolly

나는 또한 나를 위해 일하기 위해 maven-release-plugin-2.3.1git 1.9.4과 업그레이드를 가지고있었습니다 maven-release-plugin-2.5.
Welsh

1
에 플러그인을 업그레이드 2.5.2자식과 나를 위해 해결 문제2.4.0
JBCP

아마도 git 버전 / mvn 버전 연동 문제 일 수 있습니다. 최신 Maven (3.3.9)이 여전히 릴리스 플러그인을 2.3.2로 기본 설정하는 이유는 무엇입니까? 이것은 메이븐 버그입니까? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
스티븐 R. 루미스에게

4

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


참고 : 나에게는 2.5면 충분했습니다.
Innokenty 2015

1

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

제 경우에는 다음과 같이 구성된 새롭고 거의 빈 프로젝트에서 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에 내 프로젝트를 업그레이드하는 것은 나를 위해 그것을 해결 . 문제가 해결되기를 바랍니다.


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을 설치해야 함을 의미합니다.


1

Git 1.8.x를 로컬에서 사용하고 있으며 비슷한 문제가 발생했습니다.

maven-scm-plugin은

$ git add
$ git status

하지만

$ git commit

Git 1.7.x와 함께 다른 컴퓨터를 사용하면이 문제를 해결하는 데 도움이되었습니다.

참고 : maven-scm-plugin 1.8.1 또는 1.9, maven-release-plugin 2.4.1 또는 2.4.2를 사용해 보았습니다.


1.7.x로 다운 그레이드하는 것도 도움이되었습니다
CAB

0

비슷한 문제이지만 Jenkins Release Plugin 및 Gitlab을 사용 하여이 문제가 발생했습니다.

  • 처음으로 작동했습니다.
  • 두 번째로 커밋하지 않을 것입니다.

pom.xml의 SCM 구성에 오타가 있었기 때문에 오타가있는 프로젝트가 처음에 생성되었습니다. 두 번째로 Maven은 오래된 프로젝트에 액세스하여 변경 사항을 커밋하지 않고 불평했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.