2012-01-24 25 views
5

Tôi đang cố gắng phát hành thông qua plugin phát hành Maven và đang gặp sự cố với cấu hình SCM. Tôi đang sử dụng Eclipse với cài đặt m2eclipse. Chúng tôi sử dụng Mercurial và trên máy tính của mình (Win7) Tôi đã cài đặt TortoiseHg. Tôi có một dự án thử nghiệm tạo ra một cái lọ. Chúng tôi sử dụng một siêu pom cho các dự án của chúng tôi, do đó, các dự án thử nghiệm pom làm là tốt. Tôi đã thiết lập này trong pom siêu:Làm việc với Maven/Hudson/Mercurial

<build> 
    <plugins> 
     .... 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin 
      <version>1.6</version> 
      <configuration> 
       <connectionType>connection</connectionType> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

My thử nghiệm dự án pom trông như thế này:

<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/xsd/maven-4.0.0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>my.group</groupId> 
    <artifactId>TestJar 
    <version>1.0-SNAPSHOT</version> 
    <parent>  
     <groupId>my.group</groupId> 
     <artifactId>super-pom</artifactId> 
     <version>1.0</version> 
    </parent> 
    <scm> 
     <connection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </connection> 
     <developerConnection> 
      scm:hg:ssh://our.scm.server:22//path/to/TestJarProject 
     </developerConnection> 
    </scm> 
</project> 

Lưu ý rằng chúng tôi ssh vào máy chủ SCM của chúng tôi. Tôi nghi ngờ một số vấn đề mà tôi gặp phải liên quan đến vấn đề này. Tôi chỉ có thể tìm thấy các ví dụ sử dụng http.

Trong file settings.xml của tôi, tôi đã thêm này:

<servers> 
    ... 
    <server> 
     <id>our.scm.server</id> 
     <username>username</username> 
     <password>password</password> 
    </server> 
</servers> 

Khi tôi chạy phát hành: chuẩn bị phát hành: thực hiện, một hộp thoại TortoisePlink bật lên khiến tôi nhập mật khẩu. Hộp thoại yêu cầu mật khẩu "@ our.scm.server".

Dường như nó không sử dụng tên người dùng hoặc mật khẩu từ tệp settings.xml mà tôi mong đợi bằng cách thêm phần tử máy chủ vào nó. Nó phải được? Tôi cũng đã thử thêm tên người dùng của mình vào url kết nối:

<connection> 
    scm:hg:ssh://[email protected]:22//path/to/TestJarProject 
</connection> 

nhưng vẫn được nhắc nhập mật khẩu của tên người dùng trống.

CÂU HỎI MỘT

Có ai sử dụng thành công ssh để kết nối với Mercurial trong khi làm Maven releases?

Kể từ khi tôi cuối cùng muốn làm xây dựng ở Hudson, tôi thiết lập một công việc Hudson để làm việc phát hành nhưng nó không thành công với lỗi này:

[INFO] o.h.m.e.h.MavenExecutionResultHandler - Build failed with exception(s) 
[INFO] o.h.m.e.h.MavenExecutionResultHandler - [1] org.apache.maven.lifecycle.\ 
    LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:\ 
    maven-release-plugin:2.0:prepare (default-cli) on project TestJar: Cannot \ 
    prepare the release because you have local modifications : 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/_maven.repositories:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom:unknown] 
[.maven/repo/ca/shaw/eng/nms/nms-super-pom/1.0/nms-super-pom-1.0.pom.sha1:unknown] 
... many, many more lines of this nature ..... 

HỎI HAI

gì thay đổi địa phương Maven đang gặp phải điều gì?

Vì dự án đang được lấy từ repo, thay đổi duy nhất tôi có thể nghĩ là cập nhật tệp pom (loại bỏ SNAPSHOT khỏi phiên bản). Nhưng Maven không nên phàn nàn về điều này vì nó đã tự thay đổi, phải không?

CẬP NHẬT

Theo đề nghị khmarbaise, tôi đã thêm này để POM mẹ tôi:

<pluginManagement> 
    <plugins> 
     <plugin> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.2.2</version> 
     </plugin> 
    </plugins> 
</pluginManagement> 
+0

Đầu tiên hãy thực hiện phần pluginManagement trong cha mẹ của bạn và định cấu hình bản phát hành maven-release-plugin mới hơn khiến bạn đang sử dụng phiên bản 2.0 cũ hơn một chút ... Bạn sử dụng phiên bản Maven nào? Hudson là một cập nhật? Sử dụng plugin phát hành của Hudson? – khmarbaise

+0

Chúng tôi đang sử dụng Hudson 2.1.2 và Maven 3 (kèm theo Hudson) – sdoca

+0

Bạn đã kiểm tra trước nếu bạn có thể thực hiện một bản phát hành trên dòng lệnh không có Hudson? (phần pluginManagement bổ sung?) – khmarbaise

Trả lời

2

CÂU HỎI MỘT

Có ai sử dụng thành công ssh để kết nối với Mercurial trong khi làm Maven phát hành?

Câu trả lời có vẻ là Plugin phát hành Maven chỉ hoạt động với https.Chúng tôi đã có thể nhận https làm việc trên máy chủ Mercurial chúng tôi bằng cách nói chung theo các hướng dẫn trên trang này:

https://www.mercurial-scm.org/wiki/HgWebDirStepByStep

HỎI HAI

gì thay đổi cục bộ được Maven gặp phải?

Sửa đổi cục bộ là thư mục .maven được tạo trong khi tạo. Bằng cách thêm .maven/* vào tệp .hgignore của tôi, tôi đã có thể hoàn thành bản dựng.

0

Tôi không thể tái sản xuất ngay bây giờ, nhưng từ kinh nghiệm trước đó tôi nhớ rằng kết nối ssh chỉ hoạt động với xác thực dựa trên khóa, không phải với tên người dùng và mật khẩu. Điều này không nhất thiết phải cụ thể đối với plugin phát hành và/hoặc hỗ trợ Mercurial của nó.

EDIT: Tôi đã thử truy cập ssh dựa trên khóa với Mercurial và phiên bản plugin phát hành 2.4.1 ngày hôm nay và nó hoạt động độc đáo. Một nguồn có thể có của vấn đề là định dạng URL SCM. Trong trường hợp của tôi là:

scm:hg:ssh://[email protected]/path 

Vì vậy, câu trả lời cho câu hỏi của bạn là: có, nhưng không phải với xác thực tên người dùng/mật khẩu. Tôi đã không gặp phải bất kỳ vấn đề "sửa đổi cục bộ" nào, nhưng tôi có mục tiêu trong .hgignore của tôi để có thể là nó.

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