2012-08-31 15 views
7

Tôi muốn truy xuất tên phiên bản mới nhất (dưới dạng văn bản) để có thể đổi tên các artificats được lấy từ Nexus có dấu thời gian.OSS Nexus: cách sử dụng REST API để truy xuất phiên bản cuối cùng dưới dạng văn bản

Điều tôi làm là tạo bản lưu trữ của một số lưu trữ chứa các dự án jar trong nhà, phụ thuộc, tập lệnh liên quan, ... Nhưng nếu các lọ đóng gói là ảnh chụp nhanh, lưu trữ sẽ kết thúc bằng dấu thời gian khi được tải xuống. Những dấu thời gian này thay thế phần mở rộng của XXX-SNAPSHOT của kho lưu trữ và tôi không thể thực hiện bất kỳ tập lệnh tự động nào để thực hiện một số tác vụ như giải nén lưu trữ, đổi tên thư mục, ... Điện thoại

Tôi không tìm thấy bất cứ điều gì liên quan đến điều này trong tài liệu api còn lại. Có cách nào đơn giản để làm điều này với phần còn lại api hoặc một số loại kịch bản?

Cảm ơn.

Edit:

Từ câu trả lời dưới đây, tôi quản lý để lấy phiên bản mới nhất chụp bằng MỚI NHẤT thay vì tên phiên bản:

Sau đó sử dụng một kịch bản tôi có thể lấy phiên bản cơ sở.

#!/bin/bash 
VERSION=`curl --silent "http://redmine.saic.int:8081/nexus/service/local/artifact/maven/resolve?r=snapshots&g=com.g2mobility&a=G2-Modem-Mgr&v=LATEST&c=executable&e=tar.gz" | sed -n 's|<baseVersion>\(.*\)</baseVersion>|\1|p'` 

VERSION=`echo "$VERSION" | tr -d ' '` 

echo "Version is $VERSION" 

Cảm ơn!

Trả lời

8

Nexus có REST API sau để mô tả module cách Maven được giải quyết:

Ví dụ

Để có được các chi tiết về tạo tác sau đây:

<groupId>org.cometd.jetty</groupId> 
<artifactId>cometd-jetty-client</artifactId> 
<version>1.0-SNAPSHOT</version> 

Sử dụng REST API sau:

https://oss.sonatype.org/service/local/artifact/maven/resolve?r=cometd-snapshots&g=org.cometd.jetty&a=cometd-jetty-client&v=1.0-SNAPSHOT&e=jar

Trả về báo cáo sau đây:

<artifact-resolution> 
    <data> 
    <presentLocally>true</presentLocally> 
    <groupId>org.cometd.jetty</groupId> 
    <artifactId>cometd-jetty-client</artifactId> 
    <version>1.0-20090313.100344-2</version> 
    <baseVersion>1.0-SNAPSHOT</baseVersion> 
    <extension>jar</extension> 
    <snapshot>true</snapshot> 
    <snapshotBuildNumber>2</snapshotBuildNumber> 
    <snapshotTimeStamp>1236938624000</snapshotTimeStamp> 
    <sha1>0cbf7163f19bf4586e27632a1f742dd0c0e0036d</sha1> 
    <repositoryPath>/org/cometd/jetty/cometd-jetty-client/1.0-SNAPSHOT/cometd-jetty-client-1.0-20090313.100344-2.jar</repositoryPath> 
    </data> 
</artifact-resolution> 
0

Đây là một niêm yết bị xóa eariler đề nghị một cách khác để lắp ráp các bản phân phối từ Maven nội dung kho:

Ivy là một ứng dụng quản lý phụ thuộc thay thế, có thể được chạy từ command-line như sau:

java -jar ivy.jar -settings ivysettings.xml -dependency org.cometd.jetty cometd-jetty-client 1.0-SNAPSHOT -retrieve "distrib/[artifact]-[revision](-[classifier]).[ext]" 

Số truy xuất tùy chọn lệnh ivy chi tiết cách lưu trữ tệp cục bộ:

-- distrib 
    |-- cometd-api-1.0-SNAPSHOT.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT-javadoc.jar 
    |-- cometd-jetty-client-1.0-SNAPSHOT-sources.jar 
    |-- cometd-jetty-server-1.0-SNAPSHOT.jar 
    |-- jetty-6.1.15.jar 
    |-- jetty-client-6.1.15.jar 
    |-- jetty-sslengine-6.1.15.jar 
    |-- jetty-util5-6.1.15.jar 
    |-- jetty-util-6.1.15.jar 
    `-- servlet-api-2.5-20081211.jar 

Hiện vật được tạo dấu thời gian chính xác được truy xuất nhưng số sửa đổi "SNAPSHOT" được giữ nguyên, đó là những gì tôi hiểu bạn đang cố gắng thực hiện.

File ivysettings chi tiết các kho được sử dụng khi tải hiện vật:

<ivysettings> 
    <settings defaultResolver="repos"/> 
    <resolvers> 
     <chain name="repos"> 
      <ibiblio name="central" m2compatible="true"/> 
      <ibiblio name="cometd-snapshot" root="https://oss.sonatype.org/content/repositories/cometd-snapshots/" m2compatible="true"/> 
     </chain> 
    </resolvers> 
</ivysettings> 
+0

Đó là những gì tôi muốn làm, nhưng chúng tôi đang sử dụng maven và không muốn chuyển sang người quản lý phụ thuộc khác. – fewe