使用多个版本号的多个 maven 依赖项
Multiple maven dependencies using multiple version numbers
我正在尝试使用Maven和JavaScript应用程序进行原型设计。然而,我们的用例让我想知道我们需要的东西是否真的可行。
我们有一个公共库 (lib-a),它依赖于其 POM 中指定的核心库 (core-1.1) 的 1.1 版。然后,我们有一个使用 lib-a 的应用程序,但使用核心库的 1.2 版。lib-a 仍然需要使用 1.1,因为它是一个经过测试/发布/批准的库,我们很高兴它是稳定的,目前不需要重新发布。
在我们的应用程序POM中,我们引用lib-a和core-1.2;然后调用mvn clean verify
期望/希望我们得到以下应用程序结构:
.app/
来源/
目标/
lib-a/
核心-1.1/
核心-1.2/
虽然调试日志显示
核心:zip:1.1:编译(已删除 - 接近找到:1.2)
我知道它希望在 Java 世界中这样做,有没有办法阻止它为我们的情况删除旧版本?
假设lib-a
包含一个方法m
,该方法采用 core
中定义的类型 x
的参数。如果应用程序调用m
它将使用core-1.2
的 x
类型版本,而方法m
设计为接收core-1.1
版本的类型 x
。根据core-1.1
和core-1.2
之间x
的变化,这可能足够不兼容,无法正常工作。
你描述的是Maven内部的共同斗争。我只能想象,如果没有Maven,斗争是一样的,因为这是你想要做的事情的固有问题。如果没有适当的依赖管理,结果实际上可能会更加狡猾和微妙 - 即使Maven几乎无声的调试日志语句也不太明确。(不过,您可以在Maven生命周期中构建更强大的检查。
有许多有用的开源库依赖于其他开源库,而你反过来也想依赖你自己,因此给你同样的问题,或者至少是相同的责任,以确保它们都使用相同的库或以其他方式确保它愉快地一起工作。
Maven 允许您使用依赖项的"错误"版本(无论这意味着什么),但它不会让您使用同一依赖项的两个不同版本。
底线,重新考虑你在这里做什么,因为你即将被烧伤。重新考虑的一种方法可能是拆分core
这样您就不需要(或更少)在对(您当前称为)core
进行更改时重新发布lib-a
,这些更改只是为了依赖应用程序的利益。
- 可以前端maven插件使用节点,npm已经安装
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 为什么Airbnb风格指南说不鼓励依赖函数名称推断
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将本地依赖项添加到npm项目中
- 如何在内联依赖项并将图像转换为dataURI的情况下完全提取网页
- jquery中的复选框依赖项
- 为什么react/redux前端项目在package.json中包含生产依赖项
- 单元测试依赖关系没有被嘲笑
- 依赖<选择>HTML和JavaScript菜单
- FRP 中 EventStreams 的循环依赖关系
- 节点模块依赖关系
- 使用多个依赖项加载只进行一次AJAX调用
- jasmine-maven插件加载源文件及其依赖关系
- 使用多个版本号的多个 maven 依赖项
- jasmine-maven插件:管理依赖关系和单独的规范执行
- Java web应用程序的项目结构,javascript提供依赖管理、单元测试、ci以及对maven和eclipse的支
- 在maven 2中添加javascript依赖项,如Java依赖项
- 当用户指定-DskipTests=true时,不希望运行maven依赖插件
- 我们可以在Maven依赖项的jar文件中引用JavaScript吗?