一尘不染

Java 如何告诉Maven使用最新版本的依赖项?

java

在Maven中,依赖关系通常是这样设置的:

<dependency>
  <groupId>wonderful-inc</groupId>
  <artifactId>dream-library</artifactId>
  <version>1.2.3</version>
</dependency>

现在,如果你正在使用发布频繁的库,则不断更新<version>标记可能会有些烦人。有什么方法可以告诉Maven始终使用最新的可用版本(来自存储库)?


阅读 1100

收藏
2020-02-25

共1个答案

一尘不染

有关更多详细信息,请参见Maven书籍的POM语法部分。或者在Dependency Version Ranges上查看此文档,其中:

  • 方括号([&])表示“封闭”(含)。
  • 括号((&))表示“开放”(排除)。

这是说明各种选项的示例。在Maven存储库中,com.foo:my-foo具有以下元数据:

<?xml version="1.0" encoding="UTF-8"?><metadata>
  <groupId>com.foo</groupId>
  <artifactId>my-foo</artifactId>
  <version>2.0.0</version>
  <versioning>
    <release>1.1.1</release>
    <versions>
      <version>1.0</version>
      <version>1.0.1</version>
      <version>1.1</version>
      <version>1.1.1</version>
      <version>2.0.0</version>
    </versions>
    <lastUpdated>20090722140000</lastUpdated>
  </versioning>
</metadata>

如果需要依赖于该工件,则可以使用以下选项(当然可以指定其他版本范围,仅在此处显示相关的范围):

声明一个确切的版本(将始终解析为1.0.1):

<version>[1.0.1]</version>

声明一个明确的版本(除非发生冲突,否则当Maven选择一个匹配的版本时,它将始终解析为1.0.1):

<version>1.0.1</version>

声明所有1.x的版本范围(当前将解析为1.1.1):

<version>[1.0.0,2.0.0)</version>

声明一个开放式版本范围(将解析为2.0.0):

<version>[1.0.0,)</version>

将版本声明为最新(将解析为2.0.0)(从Maven 3.x中删除)

<version>LATEST</version>

将版本声明为RELEASE(将解析为1.1.1)(从Maven 3.x中删除):

<version>RELEASE</version>

请注意,默认情况下,你自己的部署将更新Maven元数据中的“最新”条目,但是要更新“发布”条目,你需要从Maven超级POM激活“发布配置文件” 。你可以使用“ -Prelease-profile”或“ -DperformRelease = true”来执行此操作

2020-02-25