通常の mvn コマンド ライン クライアントを介して中央リポジトリを参照し、特定の検索を実行することは可能ですか?
例: アーティファクト ID に「log4j」が含まれるすべてのアーティファクトのリストを取得したい。
通常の mvn コマンド ライン クライアントを介して中央リポジトリを参照し、特定の検索を実行することは可能ですか?
例: アーティファクト ID に「log4j」が含まれるすべてのアーティファクトのリストを取得したい。
これを行う小さな Groovy スクリプトを作成しました。
import groovyx.net.http.URIBuilder
import groovy.json.JsonSlurper
class Fun {
public static void main(String[] args) {
def uri = new URIBuilder("http://search.maven.org/solrsearch/select")
uri.addQueryParam 'rows', 20
uri.addQueryParam 'wt', 'json'
uri.addQueryParam 'q', args[0]
def text = uri.toURL().getText()
def json = new JsonSlurper()
def result = json.parseText( text )
result.response.docs.each { doc ->
println "$doc.id:$doc.latestVersion"
}
}
}
同じことを ( httparty
gem を使用して) 実行する Ruby スクリプトを次に示します。
require 'httparty'
query = ARGV[0]
class MavenCentral
include HTTParty
base_uri 'search.maven.org'
def initialize(query, rows=20)
@options = { query: {rows: rows, wt: 'json', q: query} }
end
def artifacts
self.class.get('/solrsearch/select', @options)
end
end
maven_central = MavenCentral.new(query)
maven_central.artifacts['response']['docs'].each do |doc|
puts "#{doc['id']}:#{doc['latestVersion']}"
end