2012-05-10 24 views
6

dự án java/maven tôi gọi là "testproject" được nối với Jenkins của tôi và mối quan hệ repo:Jenkins maven triển khai jar để mối quan hệ - vật đặt tên

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

....  
<distributionManagement> 
    <!-- use the following if you're not using a snapshot version. --> 
    <repository> 
     <id>nexus</id> 
     <name>RepositoryProxy</name> 
     <url>http://nexus:8080/nexus/content/repositories/releases</url> 
    </repository> 
    <!-- use the following if you ARE using a snapshot version. --> 
    <snapshotRepository> 
     <id>nexus</id> 
     <name>RepositoryProxy</name> 
     <url>http://nexus:8080/nexus/content/repositories/snapshots</url> 
    </snapshotRepository> 
</distributionManagement> 
...... 

Trong Jenkins tôi thiết lập, tôi có:

Build - maven3 - clean deploy 

Đúng như dự đoán, Jenkins tải lên thần vật để Nexus.Look tại giao diện điều khiển đầu ra từ Jenkins xây dựng, như sau:

[INFO] --- maven-jar-plugin:2.3.1:jar (default-jar) @ testproject --- 
[INFO] Building jar: /var/lib/jenkins/workspace/testproject/target/testproject-0.1-SNAPSHOT.jar 
[INFO] 
[INFO] --- maven-install-plugin:2.3.1:install (default-install) @ testproject --- 
[INFO] Installing /var/lib/jenkins/workspace/testproject/target/testproject-0.1-SNAPSHOT.jar to /var/lib/jenkins/.m2/repository/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1- SNAPSHOT.jar 
[INFO] Installing /var/lib/jenkins/workspace/testproject/pom.xml to /var/lib/jenkins/.m2/repository/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-SNAPSHOT.pom 
[INFO] 
[INFO] --- maven-deploy-plugin:2.5:deploy (default-deploy) @ testproject --- 
Downloading: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/maven-metadata.xml 
Downloaded: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/maven-metadata.xml (1012 B at 28.2 KB/sec) 
Uploading: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-20120509.161644-74.jar 
Uploaded: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-20120509.161644-74.jar (47 KB at 748.5 KB/sec) 
Uploading: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-20120509.161644-74.pom 
Uploaded: http://nexus:8080/nexus/content/repositories/snapshots/com/dummy/testproject/0.1-SNAPSHOT/testproject-0.1-20120509.161644-74.pom (6 KB at 149.3 KB/sec) 

Câu hỏi là:

Với phiên bản tôi đã chỉ định trong pom.xml là

<version>0.1-SNAPSHOT</version> 
  1. Tại sao Jenkins upload testproject- 0.1-20120509.161644-74 .jar để Nexus? ở đâu là 20120509.161644-74 công cụ đến từ đâu?

  2. nếu dấu thời gian 20120509.161644-74 được tạo bởi jenkins trước khi tải lên, tôi có thể định cấu hình định dạng của nó không? Tôi muốn có một cái gì đó giống như testproject-01 - $ {timestamp} - $ {} reversionId .jar

Trả lời

8

Các maven deploy plugin page nói rằng "Theo mặc định, khi một phiên bản chụp của một artifact được triển khai tới một kho lưu trữ, một dấu thời gian là hậu tố cho nó ". Vì vậy, nó được tạo ra bởi các plugin khi bạn gọi mvn deploy.

Tôi không biết nếu bạn muốn gì trong 2) là có thể. Tôi nghĩ rằng nó có thể gây ra một số rắc rối cho maven.

Khi bạn sử dụng maven với phụ thuộc SNAPSHOT, dấu thời gian được sử dụng để kiểm tra phiên bản mới nhất của SNAPSHOT. Thay đổi định dạng của ảnh chụp nhanh có thể sẽ khiến cơ chế này thất bại.

+2

Và một điều nữa: đây chỉ là vì maven 3, Một số thông tin khác [http://stackoverflow.com/questions/4275466/how-do-you-deal-with-maven-3-timestamped- ảnh chụp nhanh hiệu quả) – Miquel

+0

tôi nghĩ điều này có thể hữu ích: http://maven.apache.org/plugins/maven-deploy-plugin/examples/disabling-timestamps-suffix.html –

+1

Đó là lý do tại sao tôi đăng liên kết này trong câu trả lời của mình .. :-) – Behe

2

Dấu thời gian được thêm vào trong phiên bản SNAPSHOT kể từ Maven 3. Cùng một plugin triển khai khi được thực hiện với Maven 2 không thêm bất kỳ dấu thời gian nào.

1

Đó là cách Maven khóa phiên bản ảnh chụp sao cho phiên bản cụ thể có thể được tiêu thụ bởi một bản dựng khác - loại giải quyết vấn đề, tuy nhiên nó có những thiếu sót.

Tôi đã đi xung quanh nhà bằng ảnh chụp nhanh. Tôi tin rằng họ chỉ đơn giản là ác. Xây dựng khả năng lặp lại là một nhức đầu vì nó tẻ nhạt để tương quan với một phiên bản ảnh chụp nhanh được triển khai cho kho lưu trữ với một trình gửi mã cụ thể.

Hãy lưu những rắc rối nghiêm trọng và yêu cầu máy chủ xây dựng gọi các phiên bản mvn: set -DnewVersion = .. $ {build.number} trên máy chủ của bạn trước khi xây dựng/triển khai. Gắn thẻ mã nguồn của bạn với cùng một phiên bản. Nếu xây dựng không thành công, nó không quan trọng, xây dựng có thể được cấu hình để làm mới không gian làm việc rendering tệp pom.xml thay đổi không liên quan.

Một hình ảnh "mấu chốt" khác trong việc sử dụng ảnh chụp nhanh là bạn không chắc chắn chính xác phiên bản phụ thuộc nào mà pom của bạn có thể tiêu thụ trong quá trình xây dựng, vì vậy hãy đảm bảo xây dựng của bạn gọi phụ thuộc: cây và phụ thuộc: danh sách, trước các đối số xây dựng mvn khác. (Điều này sẽ giúp bạn xác định phiên bản không thống nhất của cùng một tạo phẩm trong quá trình phân giải transitive - Tôi thề bởi phần DependencyManagement trong các bản dựng của tôi bây giờ).

Trong khi Maven đi rất xa, "Maven Way" không phải lúc nào cũng là giải pháp tốt nhất. Nó không phải là khá đủ trưởng thành để thực hiện tốt nhất Giao hàng liên tục, nhưng bạn vẫn có thể làm việc với nó một cách hiệu quả, cung cấp cho bạn biết về những cạm bẫy.

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