Is it possible to just configure Google Artifact Repository as another repository in the grapeConfig.xml? Using username and password authentication setup through GAR, and then use Grab as you normally would?
I don't really have much experience with GAR, so I may be very mistaken. Thank you, Mike Stockman Programmer Analyst Integrated Information Technology Services [image: Utica University Logo] Office 315.792.3238 1600 Burrstone Road Utica, NY 13502 utica.edu <https://www.utica.edu/> On Sun, Jan 12, 2025 at 5:45 AM Per Nyfelt <p...@alipsa.se> wrote: > Hi, > > One of the companies i work for has moved to Google Artifact Registry > (GAR) which does not work well with @Grab so I am attempting to write an > alternative that uses maven (with some extensions handling GAR > communication) for dependency resolution. > > My problem is that in order for this to work, I have to run the dependency > grabbing code first and then the groovy script. e.g. like this > > String depScript = '''def resolver = new > se.alipsa.groovy.resolver.DependencyResolver(this)resolver.addDependency('com.googlecode.libphonenumber:libphonenumber:8.13.26') > '''String script = '''import > com.google.i18n.phonenumbers.PhoneNumberUtildef phoneNumber = > PhoneNumberUtil.getInstance().parse('+46 70 12 23 198', 'SE')println "Phone > number is ${numberUtil.isValidNumber(phoneNumber) ? '' : 'NOT '}valid"''' > > GroovyScriptEngineImpl groovyScriptEngine = new GroovyScriptEngineImpl() > groovyScriptEngine.eval(depScript) > groovyScriptEngine.eval(script) > > I tried to turn this into an annotation and adding the dependency code in a > static initializer using an ASTTransformation but import statements > are processed before static initializers during compilation so this will not > work. What maybe would work would be to register some "bootstrap" script/class > that is executed before the actual script is processed and adds the > dependencies to the ClassLoader before processing the script > (essentially running the depScript code). > > Then the above could be simplified to: > > String script = > '''@Lib('com.googlecode.libphonenumber:libphonenumber:8.13.26')import > com.google.i18n.phonenumbers.PhoneNumberUtildef phoneNumber = > PhoneNumberUtil.getInstance().parse('+46 70 12 23 198', 'SE')println "Phone > number is ${numberUtil.isValidNumber(phoneNumber) ? '' : 'NOT '}valid"''' > i.e. I would only need to change @Grab statements to @Lib statements (@Lib is > the annotation pointing to the GroovyASTTranformation class that would add > the code to the > "bootstrap" class). > > Is there a way to do such a thing? > > Regards, > Per > >