gpt4 book ai didi

grails - 在 Grails 中,如何指定 ivy 解析器所需的 jars?

转载 作者:行者123 更新时间:2023-12-02 14:56:23 25 4
gpt4 key购买 nike

在一个 grails 项目中,我根据引用文档 http://www.grails.org/doc/latest/guide/single.html#12.2%20Plugin%20Repositories 添加了一个自定义的 ivy 解析器。 .

但是,此解析器需要 jsch 和其他一些 jar。如何将它们放在项目的构建类路径中,以便 Ivy 使用它们?

这是我的 BuildConfig.groovy

grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.war.file = "target/${appName}-${appVersion}.war"

//Configure resolver
def sshResolver = new org.apache.ivy.plugins.resolver.SshResolver()
['libraries', 'builds'].each {
sshResolver.addArtifactPattern("/home/ivy/[organisation]/[revision]/[artifact].[ext]")
sshResolver.addIvyPattern("/home/ivy/[organisation]/[revision]/[artifact].[ext]")
}
sshResolver.name = "ssh"
sshResolver.settings = ivySettings

resolver sshResolver

grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global") {
}
log "warn"
repositories {
grailsPlugins()
grailsHome()
grailsCentral()
ssh()
}
dependencies {
compile 'someorg:somejar:1.0'
runtime 'mysql:mysql-connector-java:5.1.13'
}
}

最佳答案

我遇到了同样的问题,并从对我有用的 Grails 用户列表中的 Ian Roberts 那里得到了这个答案:

def myCL = new URLClassLoader([new File(
"${basedir}/lib/the.jar"
).toURI().toURL()] as URL[],
org.apache.ivy.plugins.repository.AbstractRepository.classLoader)
resolver myCL.loadClass('com.whatever.MyResolver').newInstance()

传递加载 Ivy 作为父类的类加载器很重要,这样它就可以解析 Ivy 类。

如果您需要加载多个 jars(因为您正在加载的类取决于它们),那么将所有文件放在列表中,如下所示:
def myCL = new URLClassLoader([
"${basedir}/lib/jar1",
"${basedir}/lib/jar2", // etc.
].collect { new File(it).toURI().toURL() } as URL[],
org.apache.ivy.plugins.repository.AbstractRepository.classLoader)
resolver myCL.loadClass('com.whatever.MyResolver').newInstance()

关于grails - 在 Grails 中,如何指定 ivy 解析器所需的 jars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com