Trong maven nó là rất dễ dàng để thiết lập các thuộc tính trong một pom với cú pháp như sau:Trong Maven, làm cách nào tôi có thể xây dựng động một giá trị thuộc tính khi chạy?
...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...
Bây giờ tôi cần phải xây dựng một tài sản mà phụ thuộc vào phiên bản của pom của tôi. Để tạo tài sản tôi muốn làm như sau (mã giả java):
String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0], splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6
Nó phải là năng động, bởi vì nó được sử dụng như một tên thẻ trong kho lưu trữ của chúng tôi và phải luôn luôn được đồng bộ với các phiên bản của tạo tác.
Bất kỳ ý tưởng nào về cách tạo thuộc tính "động" đó?
Và nếu tôi không ràng buộc plugin vào một giai đoạn. Tôi đang sử dụng plugin phát hành maven và gọi bản phát hành mục tiêu: chuẩn bị. Làm thế nào để làm cho nó có sẵn ở đây? – EhmKah
nếu bạn không chỉ định một pha, theo mặc định nó được ràng buộc với giai đoạn 'validate', do đó đoạn mã trên sẽ thực hiện mục tiêu khi giai đoạn xác thực đang hoạt động. khi bạn gọi trực tiếp mục tiêu, ví dụ: 'phát hành: chuẩn bị', những gì xảy ra là maven chạy mục tiêu trực tiếp bỏ qua bất kỳ giai đoạn vòng đời nào, vì vậy bản thân' release: prepar' sẽ không thấy thuộc tính * nhưng * vòng đời * được chia nhỏ * bằng 'release: prepare' sẽ thấy nó. Vì vậy, 'phát hành: chuẩn bị' sẽ không thể sử dụng thuộc tính để gắn thẻ SCM, nhưng thuộc tính sẽ có mặt trong phiên bản được chia rẽ mà plugin phát hành chạy –
Nếu bạn muốn có thẻ SCM dựa trên thuộc tính (bạn nên cập nhật câu hỏi của bạn để phản ánh rằng đây là mục tiêu của bạn, hoặc bắt đầu một câu hỏi thứ hai) sau đó bạn có thể cần phải sử dụng một cái gì đó như http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#tagNameFormat mặc dù mà sẽ không cung cấp cho bạn '_' thay thế bạn muốn cũng không phải là' _P' tiêm. Tôi khuyên bạn nên thay đổi các yêu cầu về tên thẻ thay vì cố gắng bẻ cong Maven ;-) –