2013-07-03 45 views
6

Tôi đang cố gắng thực thi mvn release:perform, nhưng lệnh giả định rằng tệp pom nằm ở gốc của kho lưu trữ. Có thuộc tính hệ thống hoặc tùy chọn nào mà tôi có thể đặt để ghi đè mặc định không?mvn release: thực hiện thất bại vì tệp pom không phải là gốc của kho lưu trữ

Cuộc gọi đến mvn release:prepare dường như đã thành công khi tất cả các tạo phẩm phát hành đang nằm trong thư mục đích và kho lưu trữ được gắn thẻ đúng cách.

Trong trường hợp quan trọng, đây là dự án git.


EDIT Dưới đây là những gì tôi đã làm:

cd /path/to/git/root/path/to/mvn/project 
mvn -DdevelopmentVersion=1.2.0-SNAPSHOT -DreleaseVersion=1.1.0 release:prepare 
...enter correct passphrase and choose all default options... 
mvn release:perform 

Và sau đó nhân bản repo từ xa trong thư mục target/checkout và sau một khuấy và đẩy sang git repo từ xa, các lỗi sau xảy ra:

[ERROR] 
[ERROR] The project (/path/to/git/root/path/to/mvn/project/target/checkout/pom.xml) has 1 error 
[ERROR]  Non-readable POM /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml: /path/to/git/root/path/to/mvn/project/target/checkout/pom.xml (No such file or directory) 

vì vậy, maven đang tìm kiếm các tập tin pom trong thư mục gốc của thư mục target/checkout, đó không phải là vị trí của nó.

+3

số Maven giả định pom là trong thư mục làm việc hiện tại và thư mục gốc của dự án. Nó không giả định pom là gốc của kho. Một bố cục chung (trong Subversion) là /trunk/ProjectName/pom.xml. phát hành: chuẩn bị các công trình ở đó. Bạn có thể giải thích về vấn đề bạn đang thực hiện với bản phát hành không? –

+0

Xem chỉnh sửa của tôi ở trên. –

+0

Chỉ tò mò, trong đó * là * tệp pom.xml, và nó được tìm thấy tự động cho tất cả các tác vụ khác, ví dụ "mvn install", "mvn compile"? Nói chung, bạn có thể sử dụng "mvn -f dir1/dir2/pom.xml" để sử dụng tệp pom.xml thay thế, mặc dù tôi chưa bao giờ thử dùng plugin phát hành. – Keith

Trả lời

0

Vì pom gốc không thực sự trong kiểm soát nguồn, tôi nghĩ rằng phát hành: chuẩn bị và phát hành: thực hiện sẽ không hoạt động cho bạn. Tôi nghĩ rằng một trong những mục tiêu của các lệnh này là đảm bảo rằng dự án được phát hành có thể được xây dựng (và vượt qua các bài kiểm tra) dựa trên điều khiển nguồn là gì, chứ không phải trên máy của một người. Đó là lý do tại sao nó cố gắng để kiểm tra và tái xây dựng. Nếu pom chỉ đơn giản là không kiểm soát nguồn, thì mục tiêu này là không thể. Bạn có thể phải tự làm các bước mà phát hành: chuẩn bị và phát hành: thực hiện: xóa snapshot, commit, tag, mvn deploy, tăng thêm phiên bản snapshot, commit.

+2

Tôi nghĩ rằng bạn hiểu nhầm nhận xét của tôi ở trên. Pom là dưới sự kiểm soát nguồn. Nó không nằm trong thư mục gốc của điều khiển nguồn. –

+0

@Andrew, Git không có khái niệm "thư mục phụ" khi nói đến cam kết, do đó, kịch bản của bạn không hoạt động được về Git + maven-release-plugin. Plugin phải cam kết/gắn thẻ toàn bộ dự án (Git) - và không thể thực hiện. KISS thiết kế tổng thể là có 1: 1 Git-project: build-artifact. Điều đó nói rằng, mô-đun phụ Maven sẽ hoạt động nhưng bạn phải chạy maven-release-plugin trên phụ huynh và tất cả các mô-đun phụ của nó. – Andre

7

Tôi đã gặp vấn đề tương tự. Thêm phần này vào pom của bạn:

<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>subdir/pom.xml</pomFileName> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

Nguồn: https://stackoverflow.com/a/8233712/555220

+0

Cảm ơn. Trông đầy hứa hẹn. Như tôi đã nói, tôi không còn sử dụng plugin phát hành nữa. Thay vào đó, sử dụng mục tiêu triển khai. Tôi sẽ cố gắng này ra, mặc dù và xem nếu nó hoạt động. –

Các vấn đề liên quan