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>
Đầ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
Chúng tôi đang sử dụng Hudson 2.1.2 và Maven 3 (kèm theo Hudson) – sdoca
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