2010-07-20 27 views
8

Tôi đang sử dụng hai cấu hình: phát triển và sản xuất.maven release plugin bỏ qua releaseProfile

Phát triển phải hoạt động theo mặc định; sản xuất nên được sử dụng khi tôi phát hành.

Trong pom.xml của tôi, tôi có:

[...] 
<plugin> 
<artifactId>maven-release-plugin</artifactId> 
<version>2.0-beta-9</version> 
<configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pproduction</arguments> 
</configuration> 
</plugin> 
[...] 
<profiles> 
    <profile> 
    <id>production</id> 
    <properties> 
     <profile.name>production</profile.name> 
    </properties> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <profile.name>development</profile.name> 
    </properties> 
     [...] 
    </profile> 
[...] 

Nó chỉ không hoạt động.
useReleaseProfiles không hoạt động hoặc: http://jira.codehaus.org/browse/MRELEASE-459

Hồ sơ phát triển nên luôn tích cực nhưng không phải khi chạy mvn release:perform. Làm thế nào để bạn đạt được điều này?

[UPDATE]: Tôi đã thấy với cờ gỡ lỗi rằng hồ sơ sản xuất của tôi được sử dụng, nhưng hồ sơ phát triển cũng được sử dụng, vì đó là activeByDefault. Điều này không thể bị ghi đè bởi đối số releaseProfile. Sẽ tốt hơn nếu buộc plugin phát hành chỉ sử dụng chỉ tiểu sử "sản xuất".

Trả lời

13

Các maven-release-plugindocumentation khuyến khích sử dụng các tham số releaseProfiles cấu hình để tự động gọi hồ sơ trong quá trình phát hành.

Đây là cách tiếp cận tốt hơn so với cách thủ công gọi cấu hình phát hành từ dòng lệnh. Một lý do là vì các cấu hình được sử dụng trong bản phát hành sẽ được ghi lại trong pom.xml và được lưu trữ với mã được gắn thẻ. Điều này làm cho quá trình xây dựng dễ hiểu hơn và dễ dàng hơn để lặp lại sau đó, giống như cách dự án ban đầu được phát hành.

Nếu sử dụng maven-release-plugin cũ hơn 2.4, hãy xem điều này bug ngăn việc sử dụng thông số được đề cập ở trên.

Lưu ý rằng trong trường hợp dự án đa mô-đun, bạn sẽ phải đặt cấu hình "releaseProfiles" trong pom gốc! Xem thêm this issue để biết thêm thông tin về điều đó.

+1

@editor, Tốt hơn là viết rằng lỗi đã được sửa, ở đây, dưới dạng nhận xét. – Arun

+0

@Leif Cảm ơn bạn đã cập nhật về sửa lỗi này! – devdanke

+0

Ngay cả với 2.5.1 tôi vẫn phải chỉ định hồ sơ của mình theo cách thủ công '-Prelease' trên CLI. –

2

Tôi nghĩ bạn chỉ nên kích hoạt tiểu sử của mình thông qua một thuộc tính.

<profiles> 
    <profile> 
    <id>production</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>release</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>develop</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
<profiles> 

Bạn của bạn được xây dựng bằng cách thực hiện một cái gì đó như thế này

mvn -Dbuild=develop package 
mvn -Dbuild=develop test 

mvn -Dbuild=release release:prepare 
mvn -Dbuild=release release:perform 
+0

vâng, tôi đã đã biết rằng người ta có thể thiết lập hồ sơ cá nhân như thế này. Nhưng cách này nó có thể được tha thứ.Nếu bạn quên nó, gói phát hành sẽ chứa các tập tin cấu hình sai và việc triển khai sẽ thất bại. Tôi muốn thực thi plugin phát hành để chỉ sử dụng cấu hình đã cho. – Janning

+0

Nó không thể quên nếu bạn xác định một số thuộc tính trong các cấu hình được yêu cầu và sử dụng bởi các plugin phát hành. – splash

+0

Tôi không hiểu nhận xét cuối cùng của bạn. Bạn có thể giải thích cho tôi không? – Janning

1

Nếu bạn kiểm tra "Introduction to Build Profiles", "Hủy kích hoạt một hồ sơ":

mvn groupId:artifactId:goal -P !profile-1,!profile-2 

Tôi đoán bạn có thể sử dụng để tắt cấu hình mặc định của bạn?

0

Đây là một bài đăng rất cũ nhưng tôi đã gặp vấn đề này khá gần đây. ReleaseProfile chỉ làm việc cho tôi khi tôi đặt releaseProfiles thành hồ sơ có tên là release. Bất kỳ hồ sơ nào khác cũng có cùng lỗi.

Mẫu mã:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagNameFormat>@{project.artifactId}[email protected]{project.version}</tagNameFormat> 
       <autoVersionSubmodules>true</autoVersionSubmodules> 
       <releaseProfiles>release</releaseProfiles> 
       <allowTimestampedSnapshots>true</allowTimestampedSnapshots> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>release</id> 
     <properties> 
      <connectionUrl>${scm-base}/tags/${project.artifactId}-${project.version}</connectionUrl> 
     </properties> 
    </profile> 
</profiles> 
Các vấn đề liên quan