2012-11-05 31 views
77

Tôi đang sử dụng maven 3.0.4 và muốn tạo dấu thời gian xây dựng có thể truy cập vào ứng dụng của tôi. Đối với điều này, tôi đang đặt một giữ chỗ trong một tập tin .properties và để cho bộ lọc maven trên xây dựng. Trong khi điều này làm việc tốt cho ${project.version}, ${maven.build.timestamp} không được thay thế khi lọc.Cách truy cập maven.build.timestamp để lọc tài nguyên

bất động sản dường như có sẵn trên xây dựng - Tôi có thể sử dụng nó để thay đổi tên vật:

<finalName>${project.artifactId}-${maven.build.timestamp}</finalName>

Vậy tại sao là nó không có sẵn cho lọc tài nguyên? Và quan trọng hơn, làm cách nào để tôi có thể truy cập?

Trả lời

165

Tôi đã phát hiện this article, giải thích rằng do một bug in maven, dấu thời gian xây dựng không được truyền tới bộ lọc. Cách giải quyết là để bọc các dấu thời gian trong bất động sản khác:

<properties> 
    <timestamp>${maven.build.timestamp}</timestamp> 
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format> 
</properties> 

lọc sau đó làm việc như mong đợi cho

buildTimestamp=${timestamp} 
+1

Chỉ cần lưu ý cho người khác, tôi đã gặp vấn đề với điều đó, vì tôi đang sử dụng Tomcat trong Eclipse và có vẻ như nó không hoạt động tốt - thay thế là ok trong thư mục 'target/$ {project}', nhưng trong Cấu hình actuall Tomcat không sử dụng thư mục này ... – Betlista

+3

@Betlista yeah, tích hợp máy chủ trong nhật thực dường như sử dụng thư mục nguồn. Đó là một trong những lý do tại sao tôi bỏ hội nhập nhật thực và sử dụng maven từ dòng lệnh. – kostja

+1

Có nhiều vị trí trong pom nơi tôi cần dấu thời gian, nhưng ở các định dạng khác nhau (ví dụ: tên tệp và chuỗi thời gian xây dựng), làm cách nào tôi có thể sử dụng 'maven.build.timestamp.format' nhiều lần? –

2

Để làm phong phú thêm nội dung Stackoverflow cho người khác, mà như tôi, tìm thấy bài đăng này là một cách để giải quyết "vấn đề" của ${maven.build.timestamp}. Đây không phải là một lỗi maven, nhưng một hành vi mong đợi của m2e, như có thể được nhìn thấy trong this post.

Vì vậy, tôi tin rằng chúng tôi không thể mong đợi giải pháp được "sửa chữa", vì, từ những gì tôi hiểu, sự điều chỉnh liên quan đến các vấn đề khái niệm.

Trong trường hợp của tôi, những gì tôi đã làm là sử dụng plugin (buildnumber-maven-plugin) như được mô tả trong số other post này.

+0

Tôi tìm thấy 'buildnumber-maven-plugin' để có các vấn đề tương tự, cụ thể là biến nó tạo ra chỉ có sẵn trong các ngữ cảnh nhất định, KHÔNG lọc. Bạn có thể hoặc không thể vượt qua điều đó bằng cách tinkering với giai đoạn thực hiện hoặc mục tiêu, nhưng giải pháp tích hợp có vẻ đơn giản hơn rất nhiều. – MarkHu

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