当前位置: 首页 > 知识库问答 >
问题:

是否有可能有一个Maven库从封闭项目中继承依赖项次要版本?

束涵涤
2023-03-14

我想建立一个库作为一个Maven项目,它依赖于一些Spring库(版本3)。

我希望在同样使用Spring3的项目中使用它,但我不希望版本冲突,否则我们将在类路径上同时使用Spring库的两个版本。

我想为我的库pom获取次要版本。来自封闭项目的xml。

我的问题是:是否有可能有一个Maven库从封闭的项目继承一个依赖性次要版本?

共有2个答案

谢洛城
2023-03-14

不,不。

您是否愿意为此目的在父pom中声明变量?如果没有,那么您必须在您的项目pom或从封装项目继承的新父pom中创建变量。${project.version}${project.parent.version}不是从其他变量,您不能组合/分解它们;您需要将这些值复制到其他变量中,并从这些变量构建您的版本字符串。

即使你们这样做,maven也会抱怨版本不是一个常数。

这种情况下的正常模式是完全忽略父版本并独立维护项目的版本:仅仅因为项目使用Spring3并不意味着它不应该从版本1开始。如果需要,可以手动跟踪父版本。由于您的项目不是父项目的一部分,因此省略${project.version}并从父项目继承它的maven约定可能不合适。

赫连彬炳
2023-03-14

我相信你在担心一些不会发生的事情。同一工件上不同依赖项之间的冲突版本将由称为依赖项中介的过程解决,Maven不会将同一工件的多个版本拉入同一类路径。例如,如果你使你的库你的组:你的库: 1.0依赖于org.springframework: sping-上下文: 3.2.4。RELEASE,并且我的项目my-group: my-artiware: 1.0依赖于org.springframework: sping-background: 3.1.4。RELEASEyou-group: you-base: 1.0,那么Maven将只将Spring上下文的版本3.1.4拉入我的构建,而不是3.1.43.2.4。如果您的库也依赖于sping-bean: 3.2.4,并且碰巧存在sping-background: 3.1.4sping-bean: 3.2.4之间的不兼容性,那么您可以认为添加sping-bean是我的项目的责任code>作为一个依赖项,并显式地将其版本重写到my-artiware的POM中的3.1.4

也就是说,通过使用版本范围,您可以完成您的问题直接提出的部分:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>[3.0.0.RELEASE,3.2.16.RELEASE]</version>
</dependency>

这将有效地告诉依赖于您的库的项目,您的库可以使用任何现有的3。X版本的spring context,但版本范围在依赖项中介期间有自己的规则集,可能不友好且模糊,并且它们也不会在不同的工件之间链接,因此我建议在您的情况下只使用常规版本号。

 类似资料:
  • 我有一个maven工件(),它依赖于某个工件()。 有一个父pom,其中包含某些其他依赖项。 是否可以使用这些依赖项,而无需在其自身pom的依赖项部分中明确添加它们?

  • 在实际使用之前,我试图从maven项目下载所有插件依赖项。 我试过跑步: 这成功地下载了它的插件及其部分依赖项。例如,对于exec插件,我得到: 但是,当您实际使用插件时,例如: 事实证明,它的依赖项尚未完全下载。 这是出乎意料的,因为根据文档,excludeTransitive属性在默认情况下为false(显式设置它没有帮助)。在我看来,它只是从定义的插件下载了一个级别的可传递依赖项。 有没有办

  • 问题内容: 设我有5个Spring Boot项目。它们都对带有某些共享/公共类的Spring Boot项目No.6具有Maven依赖性。5个独立项目在每个application.properties中分配了很多通用属性,我想对其进行抽象并将其移至通用项目。总体看起来像这样: 当前的问题是app-common.properties在project1.jar / lib / common-projec

  • 问题内容: 好吧,简而言之,我 可能 需要获取新的SWT版本而不是我们现在使用的3.3版本。该项目现在仅具有此依赖关系,并且构建良好: AFAICGoogle,公共Maven仓库中没有最新版本:http://repo1.maven.org/maven2/org/eclipse/swt/ 所以: 是否有一些最新版本的公共Maven回购? 如果不是,在哪里和本地Nexus或公司Nexus都可以安装这些

  • 我是maven的新手。(我已经搜索了几个小时的答案,但没有运气。mvn依赖:复制依赖不能解决我的问题)我需要复制项目的所有依赖项(以jar的形式),如果我的一个jar依赖于另一个工件,也复制该工件。 示例project1 pom。xml: “project1”依赖于project2。人工制品罐子当我使用“mvn依赖项:复制依赖项”时,我得到了project2。人工制品但我没有得到project3。

  • 例如:我们有一个health Utility jar,它作为maven依赖项添加到另一个项目a中。我们希望从health Utility jar中获得项目a的maven版本