2012-03-22 37 views
5

Trong phần tạo tác của chúng tôi, chúng tôi có một ảnh chụp nhanh được xác định để xử lý tối đa 5 ảnh chụp nhanh độc đáo. Chúng tôi đã thêm -SNAPSHOT-.extension vào tên tệp. SNAPSHOT cũng được chuyển đổi thành dấu thời gian. Xây dựng được thực hiện với gradle và artifact được xuất bản với tre và artifactory plugin.Xử lý tên tệp ảnh chụp nhanh có nhân bản

Một tập tin được triển khai để artifactory ...

inhouse-snapshots:com/example/project/subproject/trunk-SNAPSHOT/subproject-trunk-SNAPSHOT-79.amp 

trở thành ...

inhouse-snapshots:com/example/project/subproject/trunk-SNAPSHOT/subproject-trunk-20120321.154621-1-79.amp 

Điều này là tốt và mọi xây dựng thêm một file mới với tăng lên số lượng xây dựng, nhưng timestamp-số vẫn luôn luôn 20120321,154621-1 vì vậy chúng tôi có một danh sách tập tin như:

  • tiểu dự án-cốp-20120321.154621-1-79.amp
  • tiểu dự án-cốp-20120321.154621-1-80.amp
  • tiểu dự án-cốp-20120321.154621-1-81.amp

Bất kỳ ai có một giải pháp hay gợi ý cho một bố trí thư mục khác?

+0

Thay thế dấu thời gian chụp nhanh này không nên xảy ra trong Artifactory. Artifactory chỉ thay thế các snapshot của các tạo tác được triển khai tới một đường dẫn chuẩn Maven hợp lệ (ví dụ này không hợp lệ) trong một kho lưu trữ với bố cục Maven mặc định.Bố cục của bạn được định cấu hình để sử dụng? Bạn có tự thực hiện thay thế không? – noamt

+0

Bố trí kho lưu trữ là maven2default và tôi không thực hiện thay thế ảnh chụp nhanh. Tôi đã thử nghiệm các đường dẫn ở trên với trình kiểm tra đường dẫn trong bảng điều khiển quản trị giả tạo, gần như mọi thứ đều tốt đẹp mong đợi các số xây dựng 79, 80, ... được nhận dạng là các trình phân loại. Tôi không chắc nếu điều này là chính xác. Tôi cũng đã thử nghiệm nó mà không có số bản dựng, trong trường hợp này, phần tạo tác sẽ bị ghi đè. Có tôi sẽ mong đợi một tập tin thứ hai với một dấu thời gian mới và một -2 ... ở phần cuối của dấu thời gian –

+0

Oh Tôi chỉ nhận ra lỗi đánh máy của tôi ở trên gây ra đường dẫn maven2 không hợp lệ, cố định nó. Xin lỗi –

Trả lời

9

Như bạn đã quan sát chính xác, số bản dựng bạn đã đính kèm với tên tệp được triển khai được xác định là một trình phân loại; điều này là do Maven không chỉ định số bản dựng với ảnh chụp không phải là duy nhất.

Artifactory duy trì sự kết hợp tương tự của dấu thời gian và số bản dựng cho "lô" các tạo phẩm và "va đập" dấu thời gian và số bản dựng khi phát hiện một "lô" mới; có 2 cách, trong đó Artifactory phát hiện vật "lô" với mục đích chuyển đổi không duy nhất để chụp độc đáo:

  1. Artifacts được triển khai theo trình tự chính xác của: tạo tác (không phân loại), POM, hiện vật gắn liền (với phân loại); Các tạo phẩm thông thường đầu tiên được triển khai sau khi một POM sẽ tạo ra một "lô" mới; do đó cung cấp một dấu thời gian mới và số người xây dựng.

  2. Hiện vật được triển khai với matrix param của khóa "build.timestamp" và giá trị của dấu thời gian epoch giây dựa trên; Các tạo phẩm có cùng giá trị dấu thời gian sẽ được liên kết trong cùng một "lô".

Bạn có thể bỏ qua nên số lượng xây dựng từ tập tin được triển khai và triển khai nó với một "build.timestamp" ma trận param (để làm Artifactory bump "mẻ" trên từng triển khai mới) hoặc triển khai các tập tin đã có ảnh chụp nhanh độc đáo.

+1

Có, thx. Triển khai các tệp có dấu thời gian duy nhất thay vì SNAPSHOT làm cho ảnh chụp nhanh tự động hoạt động tốt. –

0

Tôi đã đăng giải pháp này: https://discuss.gradle.org/t/2-8-2-9-mavendeployer-doesnt-honour-uniqueversion-false-in-maven-uploadarchives/13370/8 Vấn đề tôi gặp phải là nhiều ấn bản trong phần xuất bản. Giải pháp cho tôi là thêm các tạo phẩm thừa vào một ấn bản. Sau đó tất cả các mục, api jar, jar nguồn, api source jar và jar chính có cùng dấu thời gian cho một SNAPSHOT. Điều này dường như chăm sóc build.timestamp tự động cho tôi.

task apiJar(type: Jar) { 
    classifier = 'api' 
    from(sourceSets.main.output) { 
     include "com/company/app/dto/**" 
    } 
} 

task sourceJar(type: Jar, dependsOn: classes) { 
    classifier = 'sources' 
    from sourceSets.main.allSource 
} 

task apiSourceJar(type: Jar, dependsOn: classes) { 
    classifier = 'api-sources' 
    from(sourceSets.main.allSource) { 
     include "com/company/app/dto/**" 
    } 
} 

publishing { 
    publications { 
     mavenJava(MavenPublication) { 
      from components.java 
      pom.withXml { 
       asNode().appendNode('description', 'APP Sprint Boot App') 
      } 
      artifact apiJar 
      artifact sourceJar 
      artifact apiSourceJar 
     } 
    } 
    repositories { 
     maven { 
      credentials { 
       username = 'username' 
       password = 'password' 
      } 
      if(project.version.endsWith('-SNAPSHOT')) { 
       url "http://server:9081/artifactory/libs-snapshot-local" 
      } else { 
       url "http://server:9081/artifactory/libs-release-local" 
      } 
     } 
    } 
} 
Các vấn đề liên quan