2017-01-06 14:54 GMT+01:00 Jochen Theodorou <blackdrag@gmx.org>:
On 06.01.2017 10:45, Romain Manni-Bucau wrote:
I opened https://issues.apache.org/jira/browse/GROOVY-8037 to try to
enhance it but there are still a few questions to solve before coding:

- does groovy prefer a snapshot hack in ivy resolution or a full
aether/maven resolution support?

being more easily able to use the Spring AetherGrapeEngine would certainly be good, I am not sure how the ivy file has to be changed to support snapshots properly. But in the end I would prefer the ivy based solution, since it means less dependencies for groovy itself.

Means SNAPSHOT patterns needs to be identified (likely a flag in the @Grab(snapshot=true)?) and groovy should clean up the artifacts before resolving to avoid to let ivy mess up its repo. For maven based artifact it also means you run copies instead of maven repository ones which is leading to unexpected runtime sometimes.
- what kind of SPI groovy would use (ATM GrapeEngine lookup is quite
hardcoded): do we want a config in groovy installation + system property?

would someone want to define the engine as part of the annotation or should this be automatic in the background? We could also think of using the Java service provider interface logic - of course then we have to think about what to do if multiple engines are there

sounds good in @Grab with probably a default globally settable in the script.
- if we want another engine: how do we manage dependencies? do we
isolate them from groovy libs?

they should be optional for the delivery.... and in the light of that I think depending on spring-boot-cli is an option

Alternative is to implement it in groovy without maven in a light fashion, with https://github.com/apache/tomee/blob/master/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/MavenResolver.java and https://github.com/apache/tomee/blob/master/container/openejb-loader/src/main/java/org/apache/openejb/loader/provisining/HttpResolver.java you can resolve most of maven artifacts. This code needs to be reworked on its config side cause it is specific to tomee but my point is in < 400 LOC you can get a maven resolver you own and therefore supporting snapshots is very doable there.

bye Jochen