mvn phát hành: chuẩn bị không cam kết các thay đổi đối với pom.xml


81

Tôi đang cố gắng phát hành plugin Jenkins ( stashNotifier ) với Maven và gặp sự cố với plugin phát hành.

mvn clean release:prepare

chạy đến hoàn thành mà không có lỗi nhưng không thể cam kết pom.xml đã thay đổi trong kho lưu trữ git cục bộ của tôi. Mặc dù nó có gắn thẻ HEAD của chi nhánh mà tôi đang cố gắng phát hành phiên bản 1.0.2. Đây là chi nhánh địa phương của tôi trông như thế nào trước khi chuẩn bị phát hành

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

và đây là những gì nó trông như sau

* 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 

Thật không may, pom.xml đã chứa phiên bản phát triển tiếp theo, do đó gây ra một bản phát hành tiếp theo: thực hiện để phát hành phiên bản ảnh chụp nhanh đó.

Từ đầu ra lệnh của maven, có vẻ như nó đang bỏ qua lệnh 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.

Tôi đang chạy maven 3.0.5 (không có --dry-run hoặc -DpushChanges = false). Dưới đây là những phần có liên quan (tôi nghĩ) trong cách sử dụng pom hiệu quả của tôi:

[...]

<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>

Tôi đang làm gì sai? Cảm ơn trước cho những hiểu biết của bạn!


Rất tiếc, tôi không thấy bất kỳ thông báo lỗi nào liên quan đến việc giải mã của bạn. Bạn có thể hiển thị các thông báo lỗi mà bạn nhận được không?
khmarbaise

2
Đó là điều; không có thông báo lỗi nào cả. Bạn có quan tâm đến một phần cụ thể của đầu ra? (Tôi muốn tránh đầy hơi các câu hỏi bằng cách thêm nhiều trang maven dòng lệnh đầu ra)
BumbleGee

Tôi vừa gặp vấn đề chính xác và đã giải quyết nó bằng cách cập nhật lên phiên bản 2.4 của maven-release-plugin.
brk

Tôi cũng gặp vấn đề tương tự, chỉ có điều tôi đã khắc phục bằng cách hạ cấp từ phiên bản 2.4 xuống 2.3.2. Đi tìm hình.
Greg Case

2
Tôi cũng gặp sự cố, nhưng nâng cấp từ 2.4.1 lên 2.5.1 đã giải quyết được vấn đề đó cho tôi.
John Fear

Câu trả lời:


95

Tôi đã giải quyết vấn đề từ phía tôi (chạy maven 3.0.5) bằng cách cập nhật phần phụ thuộc nhà cung cấp git scm, không phải phiên bản plugin phát hành:

<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>

Phiên bản git scm 1.8.1 tạo cam kết git một cách chính xác (được thử nghiệm với các mục tiêu chuẩn bị và khôi phục).

CHỈNH SỬA: Có thể cần các phiên bản khác nhau của maven-release-plugin và maven-scm-provider-gitexe tùy thuộc vào môi trường của bạn. Xem các bình luận để thảo luận thêm.


1
Điều này đã giải quyết vấn đề git của tôi với maven-release-plugin 2.4.2. Rất đẹp.
kevinarpe

3
@BumbleGee, bạn nên cân nhắc việc chấp nhận câu trả lời này!
ericbn

2
Nó không được sửa với <artifactId>maven-release-plugin</artifactId> <version> 2.5.2 </version> và nếu bạn xác định sự phụ thuộc của maven-release-plugin vào phiên bản phát hành mới nhất (1.9.4) của maven-scm -provider-gitexe. Tôi đã thay đổi phiên bản plugin dep .. thành 1.8.1 và mọi thứ đều hoạt động tốt.
Tobias Hochgürtel

3
Tôi sẽ thứ hai @ TobiasHochgürtel. Combo 2.5.2 & 1.9.4 vẫn có lỗi. 2.5.2 & 1.8.1 có vẻ ổn.
kenny

4
Tôi vẫn gặp sự cố là các thay đổi trong POM không được cam kết với Maven 3.3.1, maven-release-plugin 2.4.1 và maven-scm-provider-gitexe 1.9. Cập nhật lên maven-release-plugin 2.5.3 và maven-scm-provider-gitexe 1.9.4 đã giải quyết được vấn đề.
Sven Ackermann,

17

Tôi gặp phải vấn đề tương tự, giải pháp của #richnou phù hợp với tôi (nâng cấp phụ thuộc SCM). Có một vấn đề được tạo ra về vấn đề này, hãy xem liên kết bên dưới. Vấn đề liên quan đến phiên bản Git mới, trong đó "trạng thái git" trả về các thông báo được bản địa hóa mà plugin không thể phân tích cú pháp. Nó là nguyên nhân sâu xa. Sự cố đã được khắc phục trong git scm (phiên bản 1.8.1) bằng cách sử dụng --porcelaintùy chọn git (sẽ trả về đầu ra có thể phân tích cú pháp dễ dàng), nhưng sau khi khắc phục sự cố này, một vấn đề khác đã phát sinh - nếu thư mục gốc (thẻ scm) không phải là thư mục làm việc, release:preparevẫn không thành công. Sự cố này dường như đã được khắc phục trong phiên bản ảnh chụp nhanh của Git SCM (chưa được phát hành). Điều này có thể được giải quyết bằng cách ghép scmthẻ vào pom con.

MRELEASE-812

SCM-709

maven-release-plugin-and-git-fix


Tôi cũng có cùng một vấn đề. Tôi đã maven 3.2.1 và git 1.9.1. Tôi chỉ cập nhật plugin phát hành lên 2.5 không hoạt động vì thư mục tôi có pom không phải là git root. Theo gợi ý của richnou, tôi đã cập nhật maven-scm-provider-gitexe lên phiên bản mới nhất là 1.9.2 và nó đã giải quyết được vấn đề.
Chathurika Sandarenu

9

Thứ nhất, các câu trả lời từ richnou và jarkt đã giải quyết được vấn đề của tôi. Tôi nghĩ tôi đăng câu trả lời này chỉ vì các phiên bản mới hơn đã được đề cập và tôi nghĩ sẽ rất tốt nếu đưa ra thêm một ví dụ bao gồm chúng.

Tôi đang chạy plugin phát hành maven 2.3.2 với Git 3.3.x mà không chỉ định phiên bản phụ thuộc maven scm, điều này gây ra sự cố ảnh chụp nhanh. Đối với tôi, tôi vừa nâng cấp lên phiên bản mới nhất tại thời điểm đó cho cả plugin phát hành maven và phụ thuộc scm như sau:

<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>

Điều này làm việc tốt đối với tôi, các phiên bản phát hành được tải lên đúng cách lên repo phát hành và ảnh chụp nhanh cũng hoạt động như mong đợi.


2
Trong trường hợp của tôi, tôi chỉ phải nâng cấp maven-release-plugin lên 2.5.3. Không cần thiết phải chỉ định phụ thuộc gitexe.
colini

1
Maven 3.5.2, Maven-release-plugin 2.5.3 + nhà cung cấp 1.9.5 không cam kết sau khi phát hành mvn: hãy chuẩn bị cho tôi. Tuy nhiên, nhà cung cấp 1.8.1 không.
Avec

Cập nhật bình luận của tôi ở trên. 1.8.1 hoạt động để giới thiệu dự án pom đơn lẻ nhưng không hoạt động cho các dự án đa mô-đun.
Avec

9

Có thể bạn đang đọc điều này bởi vì các giải pháp trên không hiệu quả với bạn. Tôi đã gặp vấn đề tương tự và tôi đã thử mọi thứ được đề cập ở đây. Các phiên bản của tôi là: maven-release-plugin 2.5git 1.7.9

Các giải pháp mà làm việc đối với tôi là hạ maven-release-Plugin lên phiên bản 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
Tôi đã có maven-release-plugin-2.3.2và git v1.9.3 và nâng cấp để maven-release-plugin-2.5sửa nó cho tôi.
Sean Connolly

Tôi đã có maven-release-plugin-2.3.1và git 1.9.4và nâng cấp lên maven-release-plugin-2.5cũng làm việc cho tôi.
Tiếng Wales

1
Nâng cấp plugin để 2.5.2giải quyết vấn đề đối với tôi, với git2.4.0
JBCP

có lẽ đó là vấn đề khóa liên động phiên bản git / mvn. Tại sao maven mới nhất (3.3.9) vẫn mặc định plugin phát hành thành 2.3.2? Đây có phải là lỗi maven không? maven.apache.org/ref/3.3.9/maven-model-builder/super-pom.html
Steven R. Loomis

4

Nâng cấp maven-release-pluginlên 2.5.2 đã giúp ích (nâng cấp lên 2.5 thì không; nó hoạt động với một số người nhưng không phải tất cả, có thể tùy thuộc vào phần mềm mới hơn khác trên hệ thống). Tôi tin rằng nó sẽ tự động kéo nhà cung cấp mới.


Chỉ cần lưu ý: đối với tôi chỉ cần 2,5 là đủ.
Innokenty

1

Tôi vừa gặp phải vấn đề tương tự này, và từ các câu trả lời và nhận xét khác, tôi thấy rằng có thể có lỗi trong chính plugin phát hành.

Trong trường hợp của tôi, tôi đang sử dụng phiên bản 2.4 của plugin với git trong một dự án mới và gần như trống rỗng có cấu trúc như sau:

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

(Bạn có thể xem mã nguồn của dự án này tại đây, trước khi giải quyết vấn đề: dự án của tôi với cùng một vấn đề .)

Nhìn vào ghi chú phát hành cho maven-release-plugin: 2.4.1 , có vẻ như MRELEASE-830 đã giải quyết được nó.

Tôi không chắc đó có thực sự vấn đề hay không, nhưng việc nâng cấp dự án của tôi lên 2.4.1 của plugin đã giải quyết được vấn đề đó cho tôi . Hy vọng nó cũng giải quyết được vấn đề cho bạn!


1

Tôi gặp phải vấn đề tương tự khi sử dụng cygwin + maven + git. Nó không có lỗi nhưng không cố gắng thực hiện các thay đổi pom, chỉ dừng lại sau 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.

Như bạn có thể thấy, không có lỗi, chỉ là không cam kết sau khi kiểm tra trạng thái. Tuy nhiên, khi tôi chạy từ dấu nhắc lệnh của windows thay vào đó:

...
[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.

Bạn có thể thấy rằng nó đã cam kết sau khi kiểm tra trạng thái. Không chắc đây có phải là vấn đề của bạn hay không, nhưng nó đã hiệu quả với tôi.

Lưu ý rằng điều này có nghĩa là bạn cần cài đặt msysgit


1

Tôi đang sử dụng Git 1.8.x cục bộ và gặp sự cố tương tự:

maven-scm-plugin không

$ git add
$ git status

nhưng không

$ git commit

Sử dụng một máy khác với Git 1.7.x đã giúp tôi giải quyết vấn đề này.

Lưu ý: Tôi đã thử sử dụng maven-scm-plugin 1.8.1 hoặc 1.9, maven-release-plugin 2.4.1 hoặc 2.4.2.


hạ cấp xuống 1.7.x cũng giúp tôi
CAB

0

Vấn đề tương tự, nhưng tôi đã gặp sự cố này, sử dụng Plugin phát hành Jenkins và Gitlab:

  • Lần đầu tiên nó hoạt động.
  • Lần thứ hai nó sẽ không cam kết.

Hóa ra chúng tôi có lỗi đánh máy trong cấu hình SCM trong pom.xml của chúng tôi, vì vậy Dự án có lỗi đánh máy đã được tạo lần đầu tiên. Vào lần thứ hai, Maven đang truy cập vào dự án lỗi thời và phàn nàn, không cam kết thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.