2011-08-04 10 views
20

Tôi đã sử dụng dự án Java bằng Spring Framework và Git và tôi muốn hiển thị số bản dựng. Tôi đã tìm thấy số Build Number Maven plugin. Với Git số xây dựng là một băm Git. Tôi không thích điều đó và tôi nghĩ rằng một ngày có nhiều ý nghĩa hơn.Trình xây dựng số Maven, cách lưu số bản dựng trong một tệp?

Tôi đã tìm thấy điều này excellent blog article giải thích cách sử dụng plugin xây dựng số với một cấu hình khác cho SVN và Git. Vì tôi chỉ sử dụng Git, thay vì tạo một hồ sơ mới, tôi chỉ sao chép phần plugin trong thẻ xây dựng của mình.

Khi tôi chạy "gói mvn" nó nói với tôi:

[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd --- 
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631 

nào trông ok, nhưng tôi tự hỏi, mà là nó được lưu trữ? "Trạng thái git" không phát hiện bất kỳ tệp mới nào và có vẻ như nó không nằm trong target/too (target/nằm trong mygitignore).

Có lẽ tôi đã thay đổi cấu hình để lưu số bản dựng trong một tệp? Làm thế nào tôi có thể sử dụng giá trị số xây dựng?


Nhờ gợi ý của Michael-O, tôi đã đọc chương về how to filter resource files in Maven Getting Started Guide. Tôi đã tạo một tập tin application.properties trong src/main/nguồn lực/tài sản/application.properties với các nội dung sau:

# application properties 
application.name=${pom.name} 
application.version=${pom.version} 
application.build=${buildNumber} 

Tôi đã thêm đoạn mã XML sau trong xây dựng phần của tôi:

<resources> 
    <resource> 
     <directory>src/main/resources/properties</directory> 
     <filtering>true</filtering> 
    </resource> 
</resources> 

Bây giờ khi tôi gọi từ dòng lệnh "gói mvn", tập tin thuộc tính này được lưu trong mục tiêu/classes/tài sản/application.properties, ví dụ với nội dung sau:

# application properties 
application.name=Sherd Control Panel 
application.version=1.0.1-SNAPSHOT 
application.build=2011-08-05_05-55_stivlo 

Tất cả mọi thứ hoạt động tốt từ dòng lệnh, nhưng, tiếng thở dài, m2eclipse cho Build lỗi:

05/08/11 6.05.03 CEST: Build errors for obliquid-cp; 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal 
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project 
sherd: Cannot get the branch information from the scm repository : 
Exception while executing SCM command. 

Đối với một số lý do m2eclipse cố gắng để kết nối với kho lưu trữ của tôi, nhưng nó có thể không phải vì nó là một kho Git truy cập với SSH và một khóa riêng. Tôi tự hỏi nếu tôi có thể nói với m2eclipse để không kết nối với Git.


Sau khi tìm hiểu thêm, tôi đã tìm hiểu về sửa đổiOnScmTùy chọn bảo mật, đặt thành đúng và bây giờ cũng là tác phẩm m2eclipse. Để tham khảo, đây là cấu hình đầy đủ của plugin maven buildnumber mà tôi đã sử dụng (nó nằm trong tệp pom.xml trong phần build/plugins).

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
     <execution> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>create</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <doCheck>false</doCheck> 
     <doUpdate>false</doUpdate> 
     <revisionOnScmFailure>true</revisionOnScmFailure> 
     <format>{0,date,yyyy-MM-dd_HH-mm}_{1}</format> 
     <items> 
      <item>timestamp</item> 
      <item>${user.name}</item> 
     </items> 
    </configuration> 
</plugin> 

Trả lời

4

Lưu trữ trong tệp thuộc tính được lọc.

0

Trang documentation cho biết rằng các tệp thuộc tính được lưu trữ tại ${basedir}/buildNumber.properties, được tạo khi giai đoạn buildnumber:create được chạy.

+0

tuy nhiên, plugin không tạo tệp đó, ít nhất với cấu hình của tôi. Tôi đã thành công một phần bằng cách lọc các tệp thuộc tính, nhưng tôi đã gặp phải một vấn đề khác như trong câu hỏi được cập nhật của tôi. – stivlo

+0

bạn đã thử tạo tệp theo cách thủ công chưa và bắt đầu thêm buildNumber vào đầu tiên? Làm điều đó và, làm điều của bạn và sau đó kiểm tra xem số có tăng lên hay không. Đảm bảo bạn đã đáp ứng các yêu cầu mà nó yêu cầu. –

+0

Cảm ơn bạn đã đề xuất. Tôi đã cố gắng tạo một tệp buildNumber.properties rỗng và thực thi buildnumber: create và không có gì xảy ra, sau đó tôi đã cố gắng đặt bên trong một 1, thực hiện một buildnumber: create và không có gì xảy ra. Trong thời gian chờ đợi, tôi chỉ tìm ra giải pháp cho vấn đề cuối cùng bằng cách sử dụng các thuộc tính được lọc. Tôi sẽ cập nhật câu hỏi của mình với giải pháp đầy đủ. – stivlo

9

Bạn không nên đặt revisionOnScmFailure tùy chọn thành true, nó không mong đợi một boolean. Đặt nó thành chuỗi sửa đổi bạn muốn sử dụng khi SCM không khả dụng, chẳng hạn như na hoặc tương tự. Nó không quan trọng đối với trường hợp của bạn kể từ khi bạn ghi đè lên định dạng số xây dựng nhưng nó sẽ chính xác hơn.

Xem buildnumber-maven-plugin docs.

+0

đã nhận được nó, cảm ơn bạn – stivlo

+0

Cảm ơn, tôi không thể làm cho plugin hoạt động khi xây dựng thông qua Netbeans trên Mac OS X 10.10, nhưng thông qua dòng lệnh nó xây dựng tốt. Việc thiết lập thuộc tính này cho phép tôi tiếp tục làm việc thông qua IDE và máy chủ Jenkins rõ ràng cũng hoạt động. – Hiro2k

2

Tôi không thể tạo lại sự cố được OP báo cáo. Trong trường hợp của tôi cả hai dòng lệnh và m2eclipse làm việc tốt và tập tin được tạo ra một cách chính xác trong các mục tiêu mục tiêu/lớp học thư mục. Câu trả lời được cung cấp bởi @KasunBG không chính xác. BuildNumber.properties chỉ được tạo nếu bạn sử dụng như sau:

 <format>{0,number}</format> 
     <items> 
      <item>buildNumber</item> 
     </items> 

buildNumber.properties được sử dụng để lưu trữ số có thể được tăng lên. Vì lý do này (tôi nghĩ) plugin không tạo tệp này nếu bạn sử dụng dấu thời gian/scmVersion, v.v.