2012-04-03 28 views
8

Tôi không thể tìm thấy giải pháp để kích hoạt một số hồ sơ Maven trên release:preparerelease:perform (cả hai) mục tiêu. Một cái gì đó như thế này:Kích hoạt hồ sơ trên cả hai bản phát hành: chuẩn bị và phát hành: thực hiện

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.1</version> 
    <configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pmy-release</arguments> 
    </configuration> 
</plugin> 

không hoạt động. Tôi biết rằng thiết lập releaseProfiles chỉ hoạt động trong release:perform vì vậy tôi chỉ mặc dù cài đặt arguments chính xác là những gì tôi muốn nhưng hồ sơ my-profile không hoạt động trong khi thực thi. Tôi có làm điều gì sai?

Trả lời

5

Điều này giống như một câu hỏi trùng lặp. Xin hãy nhìn vào câu hỏi này, nó có một câu trả lời. maven release plugin ignores releaseProfile

Phiên bản cơ bản 2.2.1 của plugin phát hành thêm tham số releaseProfiles sẽ cho phép bạn xác định cấu hình để bật trong khi phát hành.

http://maven.apache.org/plugins/maven-release-plugin/examples/perform-release.html

Thật không may, có vẻ như có một lỗi đó sẽ cấm nó từ làm những gì bạn muốn ...

Sửa

Một điều mà tôi đã sử dụng trong trường hợp này là không sử dụng đối số -P, nhưng thay vì kích hoạt cấu hình thông qua cài đặt môi trường bằng cách sử dụng -Denv=release. Sau đó, trong POM, tôi có kích hoạt hồ sơ dựa trên giá trị của env. Điều này luôn làm việc cho tôi.

+2

Cảm ơn câu trả lời của bạn, @nwinkler. Tham số 'releaseProfiles' chỉ liên quan đến mục tiêu' release: perform', vì vậy nó không hoạt động trong 'release: prepare'. Và, bạn nói đúng, hành vi của nó là thực sự kỳ lạ. Mẹo của bạn với biến '-Dmy-release' thực sự là giải pháp hiện tại của tôi. Tôi đã không đề cập đến nó để có câu hỏi của tôi thẳng và không đề nghị bất kỳ con đường suy nghĩ về nó.Có vẻ như tuy nhiên đây là cách duy nhất (hoặc ít nhất là tốt nhất) để làm điều đó ngay bây giờ. Tôi đã thử phiên bản '2.3-SNAPSHOT' của' maven-release-plugin' và stil không hoạt động đúng cách. Buồn. –

4

Vì plugin phát hành maven bắt đầu phiên bản bổ sung, bạn phải chỉ định đối số bổ sung. Đối với bạn là trường hợp

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <arguments>${myReleaseArgs}</arguments> 
    </configuration> 
</plugin> 

và thực hiện

mvn release:prepare release:perform -DmyReleaseArgs="-Pmy-release -DskipTests=true" -Pmy-release -DskipTests=true 

và có nó phải được nhân đôi.

4

-Darguments = "- PmyProfile" dường như thực hiện công việc.

1

Nó hoạt động trong Jenkins bằng cách kích hoạt hồ sơ cá nhân cho cả hai phiên bản: chuẩn bị và phát hành: thực hiện bằng cách thiết lập thuộc tính cả

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <version>2.5.1</version> 
     <configuration> 
     <releaseProfiles>myprofile</releaseProfiles> 
     <arguments>-Pmyprofile</arguments> 
     </configuration> 
    </plugin> 
    </plugins> 
</build > 

Mặc dù làm việc trên tuyệt vời, tôi thấy hữu ích hơn để sử dụng tập tin hồ sơ kích hoạt. Khái niệm cũ với một hồ sơ 'chủ' đã gây ra một vấn đề, như tôi đã có hồ sơ trong pom cha mẹ của tôi. Điều đó có nghĩa, nó đã được kích hoạt trong mỗi mô-đun duy nhất, tùy ý.

Để giải quyết, tôi đã sử dụng phương pháp kích hoạt tệp trong tiểu sử. Nó hoạt động tốt hơn và như là một tiền thưởng nó đơn giản hóa việc phát hành trong Jenkins. Trong Eclipse, trong dòng lệnh, trong Jenkins, aka ở khắp mọi nơi, maven phát hiện tập tin và maven-release-plugin không phải được cấu hình. Cộng với cấu hình chỉ hoạt động trong mô-đun phù hợp.

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