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

2023-11-29

在 grails 项目中,我根据参考文档添加了一个自定义 ivy 解析器,http://www.grails.org/doc/latest/guide/single.html#12.2%20 插件%20 存储库 .

然而,这个解析器需要 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 类。

如果您需要加载多个 jar(因为您正在加载的类依赖于它们),则将所有文件放入列表中,如下所示:

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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Grails 中,如何指定 ivy 解析器所需的 jar? 的相关文章

随机推荐

  • 网页的功能是什么:在MVC 3 web.config中启用

    我刚刚开始一个新的 MVC 3 项目 谁能告诉我什么
  • 安全运行用户代码

    我希望创建一个人工智能环境 用户可以在其中提交自己的人工智能代码并让他们竞争 语言可以是任何语言 但最好是易于学习的语言 例如 JavaScript 或 Python 基本上我看到三个选项和几个变体 创建我自己的语言 例如一个 JavaSc
  • 在 CodeEval 网站上提交代码

    CodeEval 上的 Java 程序必须接受文件路径作为参数 我使用命令行参数来执行此操作 但当我在 CodeEval 上提交代码时 出现如下异常 这个问题有哪些潜在的解决方案 Exception in thread main java
  • 使用 iReport 根据条件设置文本字段中的背景颜色

    我的条件样式有问题iReport 我有以下内容文本字段 nameField 字段值 field1 30 field2 40 field3 50 field4 23 field5 1 field6 45 field7 34 field8 20
  • 没有定义名为“userDao”的 bean

    我得到了这个例外 这是我的代码 ApplicationContext context new ClassPathXmlApplicationContext classpath servlet context xml UserDao user
  • Kotlin Recyclerview行项目选择背景颜色变化

    我能够改变的颜色text和点击我的行的背景recyclerview in my recyclerview 但我的问题是 例如单击第二个项目后 第 10 个项目也会被选中 同样 单击第 5 个项目后 第 3 个项目也会被选中 我该如何解决这个
  • Java中如何消除String中的重复单词?

    我有一个ArrayList of Strings 并且它包含以下记录 this is a first sentence hello my name is Chris what s up man what s up man today is
  • 谷歌地图上的当前位置[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想使用谷歌地图在 Android 手机上显示我当前的位置 下面的代码可以在谷歌
  • .Net Core 1.1.0 Visual Studio 工具

    我刚刚将一个 asp net core 项目从 1 0 1 迁移到 1 1 0 运行时dotnet run or dotnet restore我收到以下消息 C Users you Desktop API src API API xproj
  • yii2 验证匹配正则表达式模式得到无效输入

    根据经验法则 在充分利用从最终用户收到的数据之前 永远不要信任这些数据 我尝试了核心验证器的匹配之一 在将其作为模式之前 我使用在线 regex101 和正则表达式调试器匹配示例字符串分 6 个步骤测试了表达式 但是 当我将其放入我的规则并
  • 在 UNIX 环境中运行时,防止未引用的 python 脚本参数中的通配符扩展

    我有一个 python 脚本 我想为其提供一个 通常 包含通配符的参数 引用一系列我想要处理的文件 这里的例子 usr bin env python import argparse import glob parser argparse A
  • 使用字符串数组在 PowerShell 中的Where-Object 中进行比较

    我有一个 Active Directory 用户列表 可以通过以下方式检索 users Get AdUser Filter Enabled eq True Properties Description 问题是我有一组特定的用户 基于他们的描
  • 如何让 awk 在打印小值时不使用科学计数法?

    在以下 awk 命令中 awk sum 1 n END avg sum n print Avg monitoring time avg file txt 我应该更改什么来删除科学记数法输出 非常小的值显示为 1 5e 05 我无法成功使用
  • 根据购物车物品重量和购物车金额计算运费

    在客户端 WooCommerce 网站中 订单金额不超过 250 时启用免费送货方式 我使用下面的代码 from 这个答案 当订单金额超过 250 时隐藏其他运费 除非购物车中有重物 add filter woocommerce packa
  • 使用字典计算列表中的项目数

    假设我有一个项目列表 例如 apple red apple red red pear 我想要一个字典来计算每个项目在列表中出现的次数 因此 对于上面的列表 结果应该是 apple 2 red 3 pear 1 我怎样才能用Python简单地
  • c# 在特定时间显示标签中的文本

    有谁知道如何在标签或文本框中显示特定时间的文本 假设如果我单击一个按钮 它会在标签中的文本框中显示输入的文本 15 秒 然后它就会消失 定时器类 代码示例 using System using System Timers public cl
  • jQuery 日期选择器动态设置所选日期

    如何动态更改 jquery 日期选择器的选定日期 我说过创建了一个内联日期选择器 然后过了一段时间 我想在那里反映不同的日期 而无需从头开始重新创建日期选择器 我尝试了setDate方法 但没有用 并且文档中没有太多文档doc 还有另一个
  • Flask 会话不会在 heroku 上持久存在

    当用户登录到我的示例应用程序时 我将用户名密钥添加到会话对象中 并将用户对象挂在全局 g 对象之外 见下文 app route login methods GET POST def login Logs the user in error
  • 逃避大括号的简单方法?

    有没有一种简单的方法可以用 Handlebars 构建字符串 value 也许类似于 Handlebars compile var var value 车把支持空白 特点 以下应该有效 Handlebars compile var var
  • 在 Grails 中,如何指定 ivy 解析器所需的 jar?

    在 grails 项目中 我根据参考文档添加了一个自定义 ivy 解析器 http www grails org doc latest guide single html 12 2 20 插件 20 存储库 然而 这个解析器需要 jsch