2012-01-18 22 views
5

Tôi thấy các câu hỏi như How to get revision number from subversion using maven? nhưng có bất kỳ tiêu chuẩn nào (defacto hay cách khác) mà trường thực tế sử dụng trong tệp kê khai, đối với phiên bản # và URL của kho lưu trữ (ví dụ: hiển thị nó trên thân cây so với nhánh) ? Tôi đã nhìn thấy Phiên bản thực hiện được sử dụng, có và không có "r" hàng đầu (để sửa đổi), tôi đã thấy Triển khai-Xây dựng: cũng được sử dụng.Các phương pháp hay nhất để nhúng số phiên bản SVN vào tệp kê khai jar Java?

chỉnh sửa Tôi đã xóa thẻ maven, không nên ở đó. Câu hỏi của tôi là về nội dung bình, không phải là dụng cụ.

+0

Không có tiêu chuẩn mà tôi biết. Mọi công ty/nhà phát triển dường như có ý kiến ​​về cách quản lý số sửa đổi, không bao giờ nhớ cách ghi lại và mô tả bản sửa đổi đó :-) –

+1

Bạn có thể muốn xem xét sử dụng tệp khác (hoặc ít nhất là bổ sung) tệp kê khai bạn đã bao giờ muốn đọc số sửa đổi theo chương trình. Đọc MANIFEST.MF từ bên trong JVM thực sự là một nỗi đau và có thể không nhất quán từ môi trường này sang môi trường khác nếu thứ bậc của trình nạp lớp thay đổi. –

+0

cũng xem: http://stackoverflow.com/questions/7670602/conventions-for-additional-content-of-the-manifest-mf-file –

Trả lời

2

Thật không may, bản thân tệp jar không có bất kỳ chuẩn nào cho việc đánh số phiên bản.

Nhưng, thực tế, có một cách tiêu chuẩn khác để nhận số sửa đổi được cập nhật tự động. Bạn có thể sử dụng svn:keywords để nhận số phiên bản hiện tại trong các tệp của mình sau mỗi lần commit. Có thuộc tính $Revision$ để thay thế bản xem lại và $HeadURL$ để thay thế URL của kho lưu trữ. Bạn chỉ cần đặt chuỗi sau vào tập tin và đặt tập tin này dưới sự kiểm soát phiên bản:

$Revision$ $HeadURL$ 

Nếu bạn tạo biểu hiện một cách nhanh chóng với maven, tôi sẽ khuyên bạn nên đặt nội dung sau vào version.properties file:

revision=$Revision$ 
repourl=$HeadURL$ 

Sau đó đưa vào thành pom.xml với tuyên bố (maven nên có đặc tính bật plugin):

<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0-alpha-1</version> 
    <executions> 
     <execution> 
     <phase>initialize</phase> 
     <goals> 
      <goal>read-project-properties</goal> 
     </goals> 
     <configuration> 
      <files> 
      <file>version.properties</file> 
      </files> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Và sau đó bạn sẽ có thể đưa số serial, url repo để manifest:

<manifest> 
    <attribute name="Revision" value="${revision}" /> 
    <attribute name="Repository URL" value="${repourl}" /> 
</manifest> 

Xin lưu ý rằng bạn sẽ cần phải explicitly enable svn:keywords sử dụng tính lật đổ để có được $Revision$$HeadURL$ thay thế trong bạn tệp với giá trị thực. Nếu bạn quyết định sử dụng version.properties, bạn sẽ cần phải chạy lệnh sau:

svn propset svn:keywords Revision version.properties 
svn propset svn:keywords HeadURL version.properties 
+0

cảm ơn, một sự điều chỉnh phải là "Revision \ HeadURL" thay vì "Id" trong propset. Tuy nhiên, $ Revision đó chỉ bao gồm phiên bản của version.properties (xem: http://svnbook.red-bean.com/en/1.7/svn.advanced.props.special.keywords.html "where's globalrev") Tuy nhiên, $ HeadURL $ không thay đổi thường xuyên (trừ khi bạn svn chuyển một thư mục con). Vì vậy, tôi nên xem xét sử dụng HeadURL và không bỏ qua từ khóa hoàn toàn. Cảm ơn. –

+1

@Steven R. Loomis: Bạn nói đúng. Đã chỉnh sửa – altern

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