在 Maven 中,依赖项通常设置如下:
<dependency>
<groupId>wonderful-inc</groupId>
<artifactId>dream-library</artifactId>
<version>1.2.3</version>
</dependency>
现在,如果您正在使用频繁发布的库,不断更新
注意:
这个答案仅适用于 Maven 2! 6 年前,所提到的LATEST
和RELEASE
metaversions 已经在 Maven 3“中为了可重复的构建而被删除” 。请参阅此Maven 3 兼容解决方案 。
如果您总是想使用最新版本,Maven 有两个关键字,您可以使用它们作为版本范围的替代品。您应该小心使用这些选项,因为您不再控制正在使用的插件 / 依赖项。
当您依赖插件或依赖项时,可以使用 LATEST 或 RELEASE 的版本值。 LATEST 是指特定工件的最新发布或快照版本,即特定存储库中最近部署的工件。 RELEASE 是指存储库中的最后一个非快照版本。通常,设计依赖于工件的非特定版本的软件不是最佳实践。如果您正在开发软件,则可能需要使用 RELEASE 或 LATEST 作为方便,以便在发布新版本的第三方库时不必更新版本号。当您发布软件时,应始终确保您的项目取决于特定版本,以减少构建或项目受不受您控制的软件版本影响的可能性。如果有的话,请谨慎使用 LATEST 和 RELEASE。
有关更多详细信息,请参阅Maven 书籍的POM 语法部分 。或者在依赖版本范围上查看此文档,其中:
[
& ]
)表示 “封闭”(含)。 (
& )
)表示 “打开”(不包括)。 这是一个说明各种选项的示例。在 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>
声明一个显式版本(除非发生冲突,否则将始终解析为 1.0.1,当 Maven 将选择匹配的版本时):
<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>
将版本声明为 LATEST(将解析为 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” 执行此操作
值得强调的是,任何允许 Maven 选择依赖版本(LATEST,RELEASE 和版本范围)的方法都会让您开放构建时间问题,因为后续版本可能有不同的行为(例如,依赖插件之前已经切换了默认值值从真到假,结果令人困惑)。
因此,在版本中定义确切版本通常是个好主意。正如Tim 的回答所指出的, maven-versions-plugin是一个用于更新依赖版本的便利工具,特别是版本:use-latest-versions和versions:use-latest-releases目标。
现在我知道这个主题是旧的,但是阅读问题和 OP 提供的答案似乎Maven Versions Plugin可能实际上是他的问题的更好答案:
特别是以下目标可能有用:
还提供了以下其他目标:
我以为我会把它包含在以后的任何参考中。
注意:
这个答案仅适用于 Maven 2! 6 年前,所提到的LATEST
和RELEASE
metaversions 已经在 Maven 3“中为了可重复的构建而被删除” 。请参阅此Maven 3 兼容解决方案 。
如果您总是想使用最新版本,Maven 有两个关键字,您可以使用它们作为版本范围的替代品。您应该小心使用这些选项,因为您不再控制正在使用的插件 / 依赖项。
当您依赖插件或依赖项时,可以使用 LATEST 或 RELEASE 的版本值。 LATEST 是指特定工件的最新发布或快照版本,即特定存储库中最近部署的工件。 RELEASE 是指存储库中的最后一个非快照版本。通常,设计依赖于工件的非特定版本的软件不是最佳实践。如果您正在开发软件,则可能需要使用 RELEASE 或 LATEST 作为方便,以便在发布新版本的第三方库时不必更新版本号。当您发布软件时,应始终确保您的项目取决于特定版本,以减少构建或项目受不受您控制的软件版本影响的可能性。如果有的话,请谨慎使用 LATEST 和 RELEASE。
有关更多详细信息,请参阅Maven 书籍的POM 语法部分 。或者在依赖版本范围上查看此文档,其中:
[
& ]
)表示 “封闭”(含)。 (
& )
)表示 “打开”(不包括)。 这是一个说明各种选项的示例。在 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>
声明一个显式版本(除非发生冲突,否则将始终解析为 1.0.1,当 Maven 将选择匹配的版本时):
<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>
将版本声明为 LATEST(将解析为 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” 执行此操作
值得强调的是,任何允许 Maven 选择依赖版本(LATEST,RELEASE 和版本范围)的方法都会让您开放构建时间问题,因为后续版本可能有不同的行为(例如,依赖插件之前已经切换了默认值值从真到假,结果令人困惑)。
因此,在版本中定义确切版本通常是个好主意。正如Tim 的回答所指出的, maven-versions-plugin是一个用于更新依赖版本的便利工具,特别是版本:use-latest-versions和versions:use-latest-releases目标。
现在我知道这个主题是旧的,但是阅读问题和 OP 提供的答案似乎Maven Versions Plugin可能实际上是他的问题的更好答案:
特别是以下目标可能有用:
还提供了以下其他目标:
我以为我会把它包含在以后的任何参考中。