Groovyでスクリプトを作成してNexusにアップロードして、必要な処理を行うことができます。
ここでは、特定のグループとリポジトリのすべてのバージョンを返すために作成したスクリプトの例を示します。 version.json
の
内容:
{
"name": "version",
"type": "groovy",
"content": "import org.sonatype.nexus.repository.storage.Query;
import org.sonatype.nexus.repository.storage.StorageFacet;
import groovy.json.JsonOutput;
def groupId = args.split(',')[0];
def repositoryId = args.split(',')[1];
def repo = repository.repositoryManager.get(repositoryId);
StorageFacet storageFacet = repo.facet(StorageFacet);
def tx = storageFacet.txSupplier().get();
tx.begin();
def components = tx.findComponents(Query.builder().where('group = ').param(groupId).build(), [repo]);
def found = components.collect {
def baseVersion = it.attributes().child('maven2').get('baseVersion');
\"${baseVersion}\"
};
found = found.unique();
tx.commit();
def result = JsonOutput.toJson(found);
return result;"
}
ここで興味深い部分は、一般的なComponent
クラスを返しtx.findComponents()
です。このクラスは、コンテナに関する追加情報を、attributes()
で提供します。 これを使用してbaseVersion
、つまり使用するMavenのバージョン(-SNAPSHOT
接尾辞付き)を取得できます。このスクリプトをインストールするには
、単に次のコマンドを実行します。あなたは、その後で簡単にそれをテストすることができます
curl -v -X POST -u <NEXUS_ADMIN>:<NEXUS_PWD> --header "Content-Type:application/json" http://<SERVER_NEXUS>/nexus/service/siesta/rest/v1/script -d @version.json
:
:
curl -v -X POST -u <NEXUS_ADMIN>:<NEXUS_PWD> --header "Content-Type: text/plain" "http://<SERVER_NEXUS>/nexus/service/siesta/rest/v1/script/version/run" -d "com.my.groupid,snapshots"
これは、あなたが望んでいたとして、あなたが望むすべてのバージョンを返します。
{
"name" : "version",
"result" : "[\"1.5.2-SNAPSHOT\",\"1.5.3-SNAPSHOT\",\"1.6.1-SNAPSHOT\",\"1.5.0-SNAPSHOT\"]"
}
願っています。
好奇心旺盛:Mavenと一緒にNexus 3を使用するのはなぜですか? –
私たちのプロジェクトはmaven(Java)に基づいているので、あなたは何をしますか? – brest1007
Nexus 3が私たちのニーズを完全に満たすまで、Nexus 2.xを使用します。 –