【问题标题】:Define Maven dependency version just before runtime在运行前定义 Maven 依赖版本
【发布时间】:2020-11-28 00:17:27
【问题描述】:

所以我有一个依赖:

<dependency>
            <groupId>com.foo</groupId>
            <artifactId>foo</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
</dependency>

我有时需要此依赖项在 2.4 版本中,而在其他时间在 2.2 版本中。有没有办法在运行之前选择它要运行的版本,或者可能是一个 maven 命令来这样做?

如果提供了范围,如果我只是将版本设置为 2.2,那么在提供 2.4 版本时它会起作用吗?

【问题讨论】:

  • 在运行时?否。原因:项目是针对特定的依赖版本编译的。但是,您可以通过 profile 设置依赖关系。问题是为什么要更改依赖项的版本?
  • 这能回答你的问题吗? How to refer environment variable in POM.xml?
  • 或许可以为此利用配置文件。

标签: java maven


【解决方案1】:

不,没有办法做到这一点。

即使您确实走上了dynamic class loading 的道路,问题仍然存在,您将拥有一个库的两个版本,它们会以您没有的方式相互竞争和/或冲突'不想要。

这里的主要问题是您似乎想要 2.2 中的某些功能在 2.4 中不可用。我会强烈鼓励您转而查看迁移到 2.4 并更新您的代码以使其在 2.4 中表现更好,而不必经历这种痛苦.

【讨论】:

    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 2016-09-18
    • 2020-07-26
    • 2019-01-24
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    相关资源
    最近更新 更多