Skip to content

Instantly share code, notes, and snippets.

@IT-Berater
Created August 8, 2017 17:11
Show Gist options
  • Save IT-Berater/639422ed71bc00d8f3b5759f0fb866ce to your computer and use it in GitHub Desktop.
Save IT-Berater/639422ed71bc00d8f3b5759f0fb866ce to your computer and use it in GitHub Desktop.
Groovy Script welches die Maven Api nach Klassennamen, GroupId und allgemein abfragt und das Ergebnis auf der Konsole ausgibt. Siehe www.wenzlaff.de
//
// Thomas Wenzlaff - www.wenzlaff.info - www.wenzlaff.de - 8.8.2017
//
// Groovy Script welches die Maven Api nach Klassennamen, GroupId und allgemein abfragt
// und das Ergebnis auf der Konsole ausgibt. Maximal 1000 Ergebnisse.
//
// Aufruf: groovy MavenApi.groovy [Suchparameter]
// Z.B. groovy MavenApi.groovy wenzlaff
// Liefert:
// Suche in der Maven API nach Begriff: wenzlaff
// Suche General:
// de.wenzlaff.twqualpass:de.wenzlaff.twqualpass:0.0.1
// de.wenzlaff.lebenskalender:de.wenzlaff.lebenskalender:0.0.3
// de.wenzlaff.dump1090:de.wenzlaff.dump1090:0.0.7
// de.wenzlaff.rest.beispiel:de.wenzlaff.rest.beispiel:1.0.2
// de.wenzlaff.phonebook:de.wenzlaff.phonebook:1.0.2
// de.wenzlaff.twflug:de.wenzlaff.twflug:0.0.1
// Suche nach Klassen Namen:
// Suche nach GroupId:
//
package de.wenzlaff.groovy
import static java.net.URLEncoder.encode
import groovy.json.JsonSlurper
// Rest Api URL des Maven Central Repository: http://search.maven.org/#api
final MAVEN_URL = "http://search.maven.org/solrsearch/select?q="
// maximale Ergebnismenge des Servers
final MAX_ERGEBNIS = 1000
// Ergebnis Format json (xml währe auch möglich)
final ERGEBNIS_FORMAT = "json"
// Ergebnis Encoding
final ENCODING = "UTF-8"
// such Parameter
final SUCH_PARAMETER = [ 'general': '', 'className': 'c', 'groupId': 'g' ]
// Kommandozeilen Parameter überprüfen und evl. Hinweis ausgeben
if (args.length != 1) {
println 'Bitte einen Suchparameter für die Abfrage als Programm Argument übergeben. Z.b. groovy MavenApi.groovy wenzlaff'
return
}
suchbegriff = args[0]
// Maven API abfrgen
def parse = new JsonSlurper().&parseText
def suche = { type, query -> parse(( MAVEN_URL + SUCH_PARAMETER[ type ] + ":${encode( query , ENCODING )}&rows=" + MAX_ERGEBNIS + "&wt=" + ERGEBNIS_FORMAT ).toURL().text)}
def ergebnisAusgabe = { json -> json.response.docs.each { println "$it.id:$it.latestVersion" }}
// Ergebnis ausgeben
println 'Suche in der Maven API nach Begriff: ' + suchbegriff
println 'Suche General:'
ergebnisAusgabe suche( 'general', suchbegriff )
println 'Suche nach Klassen Namen:'
ergebnisAusgabe suche( 'className', suchbegriff )
println 'Suche nach GroupId:'
ergebnisAusgabe suche( 'groupId', suchbegriff )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment