7

タイムスタンプを持つ Nexus から取得したアーティフィケーションの名前を変更できるように、最新のバージョン名を (テキストとして) 取得したいと思います。

私がしていることは、社内のjarプロジェクト、依存関係、関連スクリプトなどを含むいくつかのアーカイブのアーカイブを作成することです...しかし、パッケージ化されたjarがスナップショットである場合、アーカイブはダウンロード時にタイムスタンプで終わります. これらのタイムスタンプは、アーカイブの XXX-SNAPSHOT 拡張子を置き換えます。アーカイブの抽出、ディレクトリの名前変更、シンボリック リンクの作成などのタスクを実行する自動スクリプトを作成することはできません。

残りのAPIドキュメントでは、これに関連するものは見つかりませんでした. 残りのAPIまたは何らかのスクリプトでこれを行う簡単な方法はありますか?

ありがとう。

編集:

以下の回答から、バージョン名の代わりに LATEST を使用して最新のスナップショット バージョンを取得できました。

次に、スクリプトを使用してベース バージョンを取得できます。

#!/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"

ありがとう!

4

3 に答える 3

8

Nexus には、Maven モジュールの解決方法を説明する次の REST API があります。

次のアーティファクトに関する詳細を取得するには:

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

次の REST API を使用します。

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

次のレポートを返します。

<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>
于 2012-08-31T22:13:33.137 に答える
0

これは、Maven リポジトリ コンテンツからディストリビューションを組み立てる別の方法を提案する、以前に削除された投稿です。

Ivyは代替の依存関係管理クライアントであり、次のようにコマンドラインから実行できます。

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

ivy コマンドのretrieveオプションは、ダウンロードしたファイルをローカルに保存する方法を詳しく説明します。

-- 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

正しいタイムスタンプ付きアーティファクトが取得されますが、「SNAPSHOT」リビジョン番号は保持されます。これは、あなたがやろうとしていることです。

ivysettings ファイルには、アーティファクトをダウンロードするときに使用するリポジトリの詳細が記載されています。

<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>
于 2012-08-31T21:50:41.173 に答える