如何减去ivy依赖集

2023-12-01

我的目标是将项目传递依赖关系划分为几个不交叉的集合:

  • 系统(j2ee 容器中已存在 jar;使用显式固定版本手动列出)
  • 提供(要复制到 j2ee 容器的 jar;手动列出)
  • Ear (jars 装在 Ear/lib 内,其余的)

下面列出的我当前的解决方案有一些缺点:

  • 必须从ear conf中一一排除系统和提供的库
  • 尚未明确排除的新第三方传递依赖可能会意外出现
  • 有时必须添加明确的override重复库名称和版本

有没有一些方法可以消除这些缺点?

如果能够以某种方式定义一个conf作为依赖集减去其他conf的结果(通过优雅的冲突解决),那就太好了:Ear = 运行时 - 系统 - 提供.

Maybe <conf name="ear" extends="runtime,!system,!provided"/>当以下情况时可以支持符号IVY-982得到修复。

寻找实际的解决方案来应用。

如果有解决方案,甚至愿意考虑切换到 gradle。

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">

    <info organisation="example.com" module="parent"/>

    <configurations defaultconfmapping="compile->@;runtime->@;system->master;provided->runtime;ear->runtime;test->test(default)">
        <conf name="compile"/>
        <conf name="runtime" extends="compile"/>
        <conf name="ear" extends="runtime" description="Libs to be packed inside ear"/>
        <conf name="provided" description="Libs to copy to j2ee container"/>
        <conf name="system" description="Libs already present in j2ee container"/>
        <conf name="test" extends="ear,provided,system" description="Simulate container environment. Used by unit tests to catch dependency compatibility problems."/>
    </configurations>

    <dependencies>
        <dependency org="log4j" name="log4j" rev="1.2.15" force="true" conf="system"/>
        <dependency org="commons-collections" name="commons-collections" rev="3.1" force="true" conf="system"/>
        <dependency org="commons-lang" name="commons-lang" rev="2.2" force="true" conf="system"/>

        <dependency org="org.apache.velocity" name="velocity" rev="1.7" force="true" conf="provided"/>
        <dependency org="org.slf4j" name="slf4j-api" rev="1.5.6" force="true" conf="provided"/>
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.5.6" force="true" conf="provided"/>
        <!-- ... -->

        <dependency name="module1" rev="latest.integration" conf="runtime,ear,provided,test"/>
        <dependency name="module2" rev="latest.integration" conf="runtime,ear,provided,test"/>
        <!-- ... -->

        <exclude org="commons-collections" conf="ear,provided"/>
        <exclude org="commons-lang" conf="ear,provided"/>
        <exclude org="org.apache.velocity" conf="ear"/>
        <!-- TODO: negation not working: https://issues.apache.org/jira/browse/IVY-982 -->
        <!--<exclude org="org.slf4j" conf="*, !provided"/>-->
        <exclude org="org.slf4j" conf="ear,test"/>
        <!-- ... -->

        <override org="org.slf4j" rev="1.5.6"/>
        <override org="commons-collections" module="commons-collections" rev="3.1"/>
        <override org="commons-lang" module="commons-lang" rev="2.2"/>
        <!-- ... -->
    </dependencies>

</ivy-module>

要进行实验的示例项目源可以在以下位置找到IVY-1443依恋。


虽然提供了依赖项排除,但可以使用Maven and Gradle,目前看来还没有办法用ivy轻松实现。

Update

在某些情况下,可以使用中间诱导模块来解决该任务负正则表达式 mask:

    <dependency org="com.company" name="root.module" conf="ear" rev="latest.integration">
        <exclude org="^(?!com.company).*$" matcher="regexp"/>
    </dependency>

但我们已经转向 Gradle,因为 Ivy 似乎正在失去动力。

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

如何减去ivy依赖集 的相关文章

  • 不同的 JDK 更新会产生不同的 Java 字节码吗?

    假设场景 我有一个项目 其源合规性级别指定为 1 5 现在 我使用两种不同的 JDK 编译此项目 首先使用 JDK 6 Update 7 然后使用 JDK 6 Update 20 这两个不同的 JDK 是否会生成不同的 Java 字节代码
  • 使用 Spring MVC 返回 PDF 文件

    实际上 我有这个功能 我有一个框架 可以在其中设置 URL ip port birt preview report report rptdesign format pdf parameters 并且该框架呈现 PDF 文件 但我想隐藏该网址
  • 如何将列表转换为地图?

    最近我和一位同事讨论了转换的最佳方式是什么List to Map在 Java 中 这样做是否有任何具体的好处 我想知道最佳的转换方法 如果有人可以指导我 我将非常感激 这是个好方法吗 List
  • Eclipse 自动完成更改变量名称

    只是一个愚蠢的问题 但很难搜索 因为有很多关于 Eclipse 自动完成的主题 而且很难找到与我的问题匹配的内容 所以问题是 如果我写 MyClass MyVarName 然后按空格键 添加 new MyClass Eclipse 自动添加
  • 使用 java 的 RAR 档案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 我需要显式关闭连接吗?

    我持有一个实例MongoClient and DB在我的应用程序中 每次我想执行某些操作时 我都会调用getCollection 我想知道是否需要显式关闭连接 就像connection close 在 JDBC 中 强调一下 我只有一个Mo
  • ASM之前看一下maxStack指令吗?

    我正在尝试使用 ASM 库将字节代码转换为不同的格式 这可以使用 MethodVisitor 来完成 就像这个简单的测试代码一样 return new MethodVisitor ASM7 Override public void visi
  • 确定代码是否在 App Engine 运行时 (Java) 上运行

    如何确定某些代码 Serv let 或简单的类 是否正在 Google App Engine 运行时 Java 上运行 以便决定是否使用 App Engine 的特定库 是否有一些可靠的运行时环境 ID 您可以检查com google ap
  • 在Java中使用BufferedWriter写入文件时监视文件大小?

    我正在将一个可能很长的项目列表写入文件 我正在写的项目的长度是可变的 如果生成的文件大小大于10M 则应将其分成多个文件 为了提高性能 我目前使用 BufferedWriter 如下所示 final FileOutputStream fos
  • 在java中是否可以使用反射创建没有无参数构造函数的“空白”类实例?

    我有一个没有默认构造函数的类 我需要一种方法来获取此类的 空白 实例 空白 意味着实例化后所有类字段都应具有默认值 如 null 0 等 我问这个问题是因为我需要能够序列化 反序列化大对象树 而且我无法访问该对象类的源 并且类既没有默认构造
  • 我们必须将 .class 文件放在 Tomcat 目录中的位置

    我必须把我的 class文件在 Tomcat 目录中 在我的 Java Complete Reference 书中 他们告诉将其放入C Program Files Apache Tomcat 4 0 webapps examples WEB
  • java.lang.IllegalArgumentException:addChild:子名称“/”不唯一

    java lang IllegalArgumentException addChild 子名称 不唯一 通过在 tomcat webapps 文件夹中启用和禁用 saml 单点登录来替换现有 war 文件时遇到此问题 我正在使用 apach
  • 在 Java 中使用 Inflater 解压缩 gzip 数据

    我正在尝试使用以下方法解压缩 gzip 数据Inflater 根据文档 如果参数 nowrap 为 true 则 ZLIB 标头和校验和 字段将不会被使用 这提供了与 GZIP 和 PKZIP 使用的压缩格式 注意 使用 nowrap 选项
  • Akka 和 spring 配置

    我正在尝试将 akka 与 spring 结合起来 但没有成功 基本上 我的应用程序似乎不习惯读取 akka 模式 具有架构的 service context xml 的一部分
  • 在Spring-Boot中,我们如何在同一个项目中连接两个数据库(Mysql数据库和MongoDB)?

    我正在尝试创建一个 Spring Boot 项目 其中我有一个要求 我想连接到不同的数据库 MySql 和 MongoDB 我是否需要做一些特殊的事情来连接到这两个数据库 或者 spring boot 会自动计算出自己连接到这两个数据库 我
  • 设置 JAVA_HOME 变量时出现问题

    所以我刚刚下载了 Android Studio 并尝试设置 JAVA HOME 变量以便我可以运行它 我使用的是 Windows 8 并按照我找到的所有说明进行操作 但无济于事 转到高级系统设置 gt 环境变量 然后使用包含我的 jre7
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • 使用链接列表插入优先级队列的方法

    首先 我觉得我应该提到这是一项作业 我并不是在寻找直接的代码答案 只是为了指出正确的方向 我们被要求在链表中实现优先级队列 我正在努力编写 insert 函数的第一部分 在代码中我尝试检查是否head包含任何内容 如果没有则设置为head
  • Checkstyle - 方法按修饰符排序

    是否可以添加到 checkstyle 规则以按修饰符对类中的方法进行排序 我的意思是开头的公共方法和最后的私有方法 MethodsOrderCheck做这个工作 检查文档 https www qulice com qulice checks
  • 如何在 Servlet 中打开弹出窗口,然后重定向页面

    我想在调用 servlet 时打开一个弹出窗口 然后想将 servlet 重定向到某个 jsp page 这就是我所做的 protected void doGet HttpServletRequest request HttpServlet

随机推荐

  • 如何将 HTML 表中的数据插入到 mysql 数据库

    我有一个HTML表格与信息 现在我可以add rows and delete带有使用 javascript 的按钮的行 我还可以使用以下命令直接将信息添加到数据库中Add Rows按钮 然后使用以下命令从数据库中删除数据删除行按钮 但我不想
  • Linq if/else 条件?

    我知道这可能是一个新手问题 有没有办法根据布尔值选择不同的搜索条件 稍后在代码中 我想循环访问该对象 alDisabledPrograms 我知道 if else 不正确 我把它放在那里是为了表明我希望如何处理它 我尝试将其放入更大的 if
  • rijndael 加密 - 仅解密部分字符串

    只有部分字符串被解密 我认为这与我的编码有关 发生的情况如下 string s The brown fox jumped over the green frog string k urieurut string enc EncryptStr
  • 在 Windows Phone 7 上将图像转换为字节数组 没有 System.Drawing Dll 还有其他方法吗?

    Byte result Byte new ImageConverter ConvertTo img1 typeof Byte I cant use Image Converter add Image Class Drawing dll Me
  • 从名称空间生成 UUID?

    尝试根据 2 个唯一字符串生成客户端 ID 这最终应该与服务器中生成的 UUID 相同 来自相同的 Ids 对于 Javascript 它看起来像这样 uuidv5 id1 id2 uuidv5 DNS 似乎找不到在 Swift 上生成它的
  • preg_quote() 的 Ruby 等价物是什么?

    在 PHP 中你需要使用preg quote 转义字符串中在正则表达式中具有特定含义的所有字符 允许 例如 preg match 搜索那些特殊字符 以下代码在 Ruby 中的等价物是什么 The content of this variab
  • 使用数据注释对依赖属性进行自定义模型验证

    从现在开始我已经使用了优秀的流利验证库来验证我的模型类 在网络应用程序中 我将它与jquery 验证插件也可以执行客户端验证 一个缺点是许多验证逻辑在客户端重复 并且不再集中在一个地方 出于这个原因 我正在寻找替代方案 有many例子出来t
  • 使用objective-c(libz.dylib)从pdf中提取文本

    我已在视图控制器类中导入 pdf h 文件并尝试调用 NSString outPutString convertPDF pathToPdfFile 但在构建时它给了我链接器错误 convertPDF refrenced from Scrip
  • 按字母顺序对 Android 应用程序进行排序?

    我有以下代码 packageManager getPackageManager List
  • 为什么 CancellationTokenSource 会挂起应用程序

    这是挂起且永不结束的简单代码段 public static void Main using var cancellationTokenSource new CancellationTokenSource Console CancelKeyP
  • Android - 支持 0 台设备

    我在更新现有应用程序时遇到问题 apk 上传工作正常 但 Google Play 表示支持 0 台设备 我一直在寻找其他一些帖子并尝试修改我的清单 但没有成功 该应用程序是使用 Ionic 框架开发的 目前我已经成功上传了20多个旧版本 然
  • 对于不返回 void 的 C++ 函数,是否必须使用 return 语句?

    我的 Herb Schildt 关于 C 的书说 在 C 中 如果一个函数被声明为返回一个值 那么它must返回一个值 但是 如果我编写一个具有非 void 返回类型的函数并且不返回任何内容 编译器会发出警告而不是错误 控制到达非 void
  • 根据某些条件从 Vec 中删除元素[重复]

    这个问题在这里已经有答案了 我的代码如下所示 struct Bar i i32 struct Foo v Vec
  • 一张图表中的条形图和折线图,并在 ggplot2 下带有图例

    我想将两个独立但相关系列的条形图和线图放在带有图例的同一张图表上 条形图是季度增长 线图是年度增长 我目前使用宽格式的 data frame 和如下代码来完成此操作 p lt ggplot geom bar df aes x Date y
  • 简单的函数突然抛出“发生未知错误,请稍后再试”

    从今天早上开始 我在尝试在新的 Google 工作表上运行新的应用程序脚本时收到以下消息 错误 发生未知错误 请稍后再试 我附加到现有 Google 表格的其他应用程序脚本继续运行良好 但是 如果我创建一个新工作表并添加一个简单的函数 如下
  • 在 Java 中创建悬空指针

    如何在 Java 中创建悬空指针 根据维基百科的定义 below no 计算机编程中的悬空指针和野指针是不指向适当类型的有效对象的指针 当删除或释放对象而不修改指针的值时 会出现悬空指针 这样指针仍然指向已释放内存的内存位置
  • 计算特定组的相对频率

    我有一个分类变量的 data frame 我已将其分为几组 并且获得了每组的计数 My original data nyD looks like Source local data frame 7 x 3 Groups v1 v2 v3 v
  • 停止活动中的服务

    我正在使用以下代码来停止我的服务 Intent intent new Intent MainActivity this UsageRecorderService class stopService intent 这是我的无限期服务 publ
  • 可视化编程工具

    我需要用于图形表示程序中的工作流程的工具 就像用图形表示描述电子电路一样 表示必须如下所示 函数是框 框之间的箭头是 消息 像这样 替代文本http img372 imageshack us img372 8471 functionsqv0
  • 如何减去ivy依赖集

    我的目标是将项目传递依赖关系划分为几个不交叉的集合 系统 j2ee 容器中已存在 jar 使用显式固定版本手动列出 提供 要复制到 j2ee 容器的 jar 手动列出 Ear jars 装在 Ear lib 内 其余的 下面列出的我当前的解