2013-08-28 12 views
5

Chúng tôi chỉ định versionId trong POM và tương ứng là maven tạo foo-version.jar. Ví dụ: foo-1.0-SNAPSHOT.jar.thông tin phiên bản xây dựng maven

Có thể thực hiện các thao tác sau với con quạ không?

  • Không chỉ định phiên bảnId trong POM nhưng chỉ định phiên bản xây dựng từ dòng lệnh. Điều này sẽ giúp không "hardcode" các phiên bản trong POM và thay đổi nó cho mỗi bản phát hành, nhưng chỉ định nó thông qua một kịch bản siêu xây dựng.
+2

Thay đổi để phát hành nên được thực hiện bởi Plugin phát hành và không bằng tay. – khmarbaise

+0

Khi bạn có một phiên bản nhị phân cụ thể của phần mềm, bạn sẽ biết phiên bản nào của nguồn được sử dụng để xây dựng nó? – artbristol

Trả lời

5

Set phiên bản dự án trong pom như một giữ chỗ

<groupId>test</groupId> 
<artifactId>x</artifactId> 
<version>${project.version}</version> 

bây giờ bạn có thể vượt qua phiên bản từ dòng lệnh

mvn -Dproject.version=1.1.1 package 
+0

Tôi đã thử rằng trong những ngày cũ của Maven 2, iirc cách tiếp cận này không hoạt động. Kết quả POM được tạo ra không sử dụng được. (Tôi muốn điều này đã được cải thiện ngay bây giờ). Đó là lý do tại sao tôi cần viết một kịch bản nhỏ để thực hiện thay đổi phiên bản POMs –

+0

Điều này đã làm việc nhưng POM được tạo/cài đặt cũng có ' $ {project.version}'. Đây không phải là một vấn đề đối với một module phụ thuộc để sử dụng module này? Preferrebly, POM được tạo nên có phiên bản thực tế mà mô đun được xây dựng. – gammay

4

Bạn có thể sử dụng maven release plugin.

release:update-versions -DautoVersionSubmodules=true

bạn cần autoVersionSubmodules nếu bạn muốn cùng một phiên bản cho mỗi mô-đun. Khác bạn sẽ cần phải xác định phiên bản cho mỗi.

này sẽ chỉ tăng phiên bản hiện tại của bạn, nếu bạn muốn có một phiên bản cụ thể thêm -DdevelopmentVersion=your version để lệnh của bạn

CẬP NHẬT Tôi tìm thấy một plugin mà hiện các trick. The maven versions plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>versions-maven-plugin</artifactId> 
    <version>2.1</version> 
</plugin> 

Với lệnh này bạn có thể thiết lập các phiên bản: versions:set -DnewVersion=your version

+0

Khi tôi thử tùy chọn đầu tiên, tôi nhận được lỗi này: '[ERROR] Không thể thực hiện mục tiêu org.apache.maven.plugins: maven-release-plugin: 2.3.2: cập nhật phiên bản (mặc định-cli) về dự án đơn giản : Thiếu cài đặt bắt buộc: kết nối scm hoặc developersConnection phải được chỉ định. -> [Help 1] '. Tùy chọn thứ hai cập nhật phiên bản * sau * bản dựng! Trong mọi trường hợp, ý tưởng là để giữ cho phiên bản ra khỏi POM khi POM được kiểm tra vào CM và chúng tôi không muốn cam kết tệp cho mỗi bản dựng. – gammay

+0

thì bạn cần phải thêm thẻ scm vào pom của bạn, [đây] (http://maven.apache.org/scm/maven-scm-plugin/usage.html) một ví dụ về cách sử dụng của nó – mokuril