2009-08-04 48 views
10

Tôi đang cố gắng thêm svn.revision vào phiên bản dự án dưới dạng số bản dựng và dường như không thể làm như vậy. Jar của tôi có tên bao bì chính xác durin, nhưng nó được cài đặt trong kho lưu trữ cục bộ của tôi nó như thể $ {buildNumber} là/không được xác định khi phiên bản được thiết lập.Tôi có thể đặt phiên bản dự án bằng plugin xây dựng-maven-plugin không?

tôi nhận được foo-1.0.0-SNAPSHOT- $ {} buildNumber thay vì foo-1.0.0-SNAPSHOT-

Bất kỳ ý tưởng những gì tôi đang làm sai hoặc là thêm một phiên bản cho phiên bản dự án là một ý tưởng tồi? Cảm ơn đã giúp đỡ.

<project> 
    ... 
    <version>1.0.0-${release.identifier}-${buildNumber}</version> 
    <properties> 
    <release.identifier>SNAPSHOT</release.identifier> 
    </properties> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>buildnumber-maven-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>useLastCommittedRevision</id> 
      <goals> 
       <goal>create</goal> 
      </goals> 
      <configuration> 
       <useLastCommittedRevision>true</useLastCommittedRevision> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    ... 
</project> 

Trả lời

8

Vấn đề có hai phần:

  1. Bạn đang cố gắng để thiết lập buildNumber vào phiên bản trước khi nó được giải quyết nên nó sẽ luôn luôn được ${buildNumber} chứ không phải là giá trị giải quyết.

    Thay vì cố gắng thay đổi động phiên bản, bạn nên đặt buildNumber thành phần finalName trong bản dựng. Điều này sẽ tạo ra các tạo phẩm với tên dự định trong kho lưu trữ cục bộ.

  2. Plugin cài đặt sẽ bỏ qua finalName và triển khai nó dưới dạng 1.0.0-SNAPSHOT bất kể, tôi không biết cách nào để giải quyết điều đó. buildNumber được thêm vào tệp kê khai nếu bạn định cấu hình plugin như dưới đây.

    Vì vậy, cấu hình của bạn sẽ là một cái gì đó như:

    <version>1.0.0-${release.identifier}</version> 
    ... 
    <build> 
        <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName> 
        ... 
    </build> 
    

tôi sẽ tránh sử dụng xây dựng số trên SNAPSHOT dự án.

Maven cung cấp từ khóa SNAPSHOT để biểu thị một dự án dễ bay hơi trong quá trình phát triển tích cực. Vì vậy, nếu bạn tham khảo một dự án với phiên bản phụ thuộc SNAPSHOT, Maven sẽ tự động kiểm tra các bản cập nhật và giữ cho các phụ thuộc của bạn được đồng bộ hóa.

Nếu sau đó bạn thêm số bản dựng vào cuối phiên bản đó, bạn sẽ phải cập nhật phụ thuộc theo cách thủ công, vì vậy bạn sẽ mất mọi lợi ích khi có hậu tố SNAPSHOT.

Cá nhân tôi tránh sử dụng số bản dựng nếu có thể. Nếu tôi phải cập nhật dự án, tôi chỉ cần tăng số phiên bản hoặc sử dụng hậu tố như beta-2 hoặc RC2. Nếu bạn cần theo dõi bản sửa đổi trong SNAPSHOT, tôi khuyên bạn nên thêm bản sửa đổi vào Tệp kê khai để bạn có thể kiểm tra nơi xây dựng có nguồn gốc, nhưng sử dụng hậu tố chuẩn SNAPSHOT để cho phép Maven giải quyết các phiên bản thông thường. Cấu hình bên dưới cho thấy cách thêm bản sửa đổi vào Tệp kê khai.

Theo như cấu hình của bạn có liên quan, có vẻ OK với tôi giả định rằng url SCM của bạn được thiết lập chính xác. Nếu bạn không có cấu hình SCM trong POM của bạn có thể là vấn đề.

Bạn có thể chạy với -X và kiểm tra xem có bất kỳ đầu ra nào từ plugin cho biết tại sao nó không đặt thuộc tính không?

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>maven-buildnumber-plugin</artifactId> 
    <version>0.9.4</version> 
    <executions> 
    <execution> 
     <id>useLastCommittedRevision</id> 
     <phase>validate</phase> 
     <goals> 
     <goal>create</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
    <archive> 
     <manifest> 
     <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
     </manifest> 
     <manifestEntries> 
     <Implementation-Build>${buildNumber}</Implementation-Build> 
     </manifestEntries> 
    </archive> 
    </configuration> 
</plugin> 
3

Thêm này sau khi buildnumber-maven-plugin:

<plugin> 
    <groupId>io.github.michaldo</groupId> 
    <artifactId>nashorn-maven-plugin</artifactId> 
    <version>0.0.1</version> 
    <executions> 
     <execution> 
      <phase>validate</phase> 
      <goals> 
       <goal>eval</goal> 
      </goals> 
      <configuration> 
       <script> 
        $project.artifact.version = "${buildNumber}"; 
       </script> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

buildNumber sẽ được công nhận bởi đóng gói và triển khai.

+0

Cảm ơn. Fyi, sau khi chuyển sang git, chúng tôi bắt đầu đi qua builder từ jenkins như một git làm cho một số ít xây dựng nói được –

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