我怎样才能在 groovy 中找出神器的位置

How can I find out the place of an artifact in groovy

我声明了以下 groovy 依赖项:

@GrabResolver(name='mymirror', root='http://myartifactory/public/')
@Grab(group='groupid', module='artifactid', version='1.2.3')
println //What should I write here to see: c:\Users....m2....artifactid.jar

如何在 groovy 中获取下载的已解析工件的位置?

默认情况下,Grape 将 jar 缓存存储在 ~/.groovy/grapes 上。所以,我认为你可以这样做:

@GrabResolver(name='mymirror', root='http://myartifactory/public/')
@Grab(group='groupid', module='artifactid', version='1.2.3')

String grapeCacheDir = "${System.getProperty('user.home')}/.groovy/grapes"
String group = 'groupid'
String module = 'artifactid'
String version = '1.2.3'

File myJar = new File("$grapeCacheDir/$group/$module/jars/${module}-${version}.jar")
println myJar.path

这不是一个完美的解决方案,但我想不出任何其他选择。

@Grab(group='net.sourceforge.plantuml', module='plantuml', version='8049')
import groovy.grape.Grape

def grape = Grape.getInstance()
def r = grape.listDependencies(this.getClass().getClassLoader())
println r
println grape.resolve(r[0])

打印

[[group:net.sourceforge.plantuml, module:plantuml, version:8049]]
[file:/C:/Users/dm/.groovy/grapes/net.sourceforge.plantuml/plantuml/jars/plantuml-8049.jar]