2011-09-07 32 views
18

Tôi đang cố gắng phát hành một dự án bằng cách sử dụng maven nhưng thay vì phát hành kho lưu trữ Bản phát hành, nó sẽ đặt nó trong kho lưu trữ Snapshots của chúng tôi.Maven triển khai để chụp nhanh thay vì phát hành

pom của tôi trông giống như:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
          http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.example.my.profiler</groupId> 
<artifactId>profilerlib</artifactId> 
<name>Profiler Lib</name> 
<version>1.0.2-SNAPSHOT</version> 
<description>Profiler Library</description> 
<scm> 
    <connection>scm:svn:https://svn.example.com/my-project/profilerlib/trunk 
    </connection> 
    <developerConnection>scm:svn:https://svn.example.com/my-project/profilerlib/trunk 
    </developerConnection> 
</scm> 
<distributionManagement> 
    <!-- Publish the versioned releases here --> 
    <repository> 
     <id>nexus</id> 
     <name>nexus</name> 
     <url>http://repo.example.com:8081/nexus/content/repositories/releases 
     </url> 
    </repository> 
    <!-- Publish the versioned releases here --> 
    <snapshotRepository> 
     <id>nexus</id> 
     <name>nexus</name> 
     <url>http://repo.example.com:8081/nexus/content/repositories/snapshots 
     </url> 
    </snapshotRepository> 
</distributionManagement> 
<!-- download artifacts from this repo --> 
<repositories> 
    <repository> 
     <id>nexus</id> 
     <name>EXAMPLE Public Repository</name> 
     <url>http://repo.example.com:8081/nexus/content/groups/public</url> 
     <releases> 
      <enabled>true</enabled> 
     </releases> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
<dependencies> 
    ... 
</dependencies> 
<build> 
    <finalName>${project.artifactId}</finalName> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <configuration> 
       <tagBase>https://svn.example.com/my-project/profilerlib/tags 
       </tagBase> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <powermock.version>1.4.6</powermock.version> 
</properties> 
</project> 
+0

Bạn đã tìm thấy giải pháp cho vấn đề này? – mihn

+0

Thời gian dài trước đây, nhưng IIRC tôi đã phải xác định các giá trị lưu trữ riêng biệt và giá trị snapShotRepository ID trong tệp pom.xml của tôi –

Trả lời

11
<repository> 
    <id>nexus</id><!--etc--> 
</repository> 
<snapshotRepository> 
    <id>nexus</id><!--etc--> 
</snapshotRepository> 
<!-- etc --> 
<repositories> 
    <repository> 
     <id>nexus</id> 
     <!-- etc --> 
    </repository> 
</repositories> 

Đây là vấn đề, bạn đang sử dụng id tương tự cho ba kho khác nhau. Maven quản lý các kho này theo ID, vì vậy mỗi ID phải là duy nhất! Ví dụ. sử dụng "nexus-release", "nexus-snapshots" và "nexus".

+0

Cảm ơn bạn đã thử, nhưng tôi vẫn thấy vấn đề tương tự. Đầu ra của Maven giúp đỡ? –

+3

Tại sao câu trả lời được chấp nhận này lại không giải quyết được vấn đề? – Ken

+0

@Ken cả hai câu trả lời đều hợp lệ, họ chỉ cho thấy hai khía cạnh khác nhau của vấn đề có thể là gì. có lẽ cả hai cùng nhau giải quyết vấn đề? –

12

POM hiển thị số phiên bản là phiên bản SNAPSHOT. Vì vậy, nếu bạn chạy mvn deploy với POM ở trạng thái này, nó sẽ tự nhiên triển khai ảnh chụp nhanh vào kho lưu trữ ảnh chụp nhanh.

Để thực hiện bản phát hành, bạn cần phải sử dụng các mục tiêu của release plugin.


Mặt khác, có thể bạn đã biết điều này và câu trả lời thực sự nằm trong câu trả lời của Sean Patrick Floyd.

+0

Haha, tôi đã bỏ qua điều hiển nhiên (+1) !! –

+0

Tôi đang chạy: mvn release: chuẩn bị phát hành: thực hiện NOT mvn deploy. Từ những gì tôi hiểu, plugin phát hành phải xóa hậu tố -SNAPSHOT trước khi triển khai, không? –

+1

@ user932509 bạn nên chạy chuẩn bị và thực hiện theo hai bước riêng biệt, bởi vì tôi nghi ngờ rằng chuẩn bị thay đổi phiên bản của hiện vật chạy thực thi (điều đó sẽ là ác) –

19

Trong trường hợp ai gặp vấn đề này và tìm ra câu trả lời hiện tại không giải quyết vấn đề của họ:

Đã có một số ít các lỗi đó có nghĩa là release:prepare không cam kết kho git trước khi tạo thẻ phát hành . Điều này có nghĩa là số phiên bản trong các tệp pom mà các tìm kiếm release:perform chứa -SNAPSHOT và người triển khai sẽ cố gắng phát hành tới kho lưu trữ ảnh chụp nhanh.

Đây là khiếm khuyết gần đây nhất chịu trách nhiệm về hành vi này: MRELEASE-875 (ảnh hưởng đến 2.5, cố định trong 2.5.1)

+0

Đây chính là vấn đề của tôi, cảm ơn! Vì một số lý do Maven đã chọn bản phát hành 2.5 bị hỏng; buộc nó phải chọn 2.5.1 (http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-release-plugin/2.5.1) bằng cách xác định phiên bản trong POM đã sắp xếp nó ra. –

+0

Chỉ cần xác nhận điều đó! cảm ơn nhiều. Tôi tìm thấy [một trang trợ giúp] (https://maven.apache.org/guides/mini/guide-releasing.html) đang hiển thị phiên bản '2.5' của' maven-release-plugin'. Tôi chỉ cần gửi một email trên [ML] (http://mail-archives.apache.org/mod_mbox/maven-users/201507.mbox/thread) để yêu cầu họ cập nhật trang này. – boly38

2

hôi Fell của vấn đề này với một nguyên nhân khác nhau ... chắc chắn rằng việc phát hành-plugin kiểm tra một thẻ, và không phải là một chi nhánh có cùng tên!

Tôi vừa mới làm hỏng điều này ... Tôi đã tạo một nhánh có tên "1.9.0" để phát hành bản phát hành của mình, sau đó chạy bản phát hành mvn: chuẩn bị cũng tạo thẻ "1.9.0". Khi phát hành mvn: thực hiện chạy nó đã làm một kiểm tra git của "1.9.0, và kết thúc lên chọn HEAD của chi nhánh 1.9.0, trong đó, tất nhiên, đã có một SNAPSHOT trong nó (1.10-SNAPSHOT).

Đó là hai giờ trong cuộc đời của tôi, tôi sẽ không quay lại ... Trong tương lai, tôi sẽ thêm hậu tố "-release" vào tên chi nhánh (ví dụ: "1.9.0-release")

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