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

Java 我如何告诉Maven使用最新版本的依赖项?,java,maven,dependencies,maven-2,maven-metadata,Java,Maven,Dependencies,Maven 2,Maven Metadata,在Maven中,依赖项通常是这样设置的: 奇妙公司 梦想图书馆 1.2.3 现在,如果您正在使用频繁发布的库,那么不断更新标记可能会有点烦人。有没有办法告诉Maven始终使用最新的可用版本(来自存储库) 您是否可能依赖于在开发过程中明显变化很大的开发版本 与增加开发版本的版本不同,您可以只使用快照版本,在必要时覆盖该版本,这意味着您不必在每次细微更改时都更改版本标记。类似于1.0-SNAPSHOT的东西 但也许你正在努力实现其他目标;) 您是否可能依赖于在开发过程中明显变化很大的开发版本 与

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


奇妙公司
梦想图书馆
1.2.3

现在,如果您正在使用频繁发布的库,那么不断更新标记可能会有点烦人。有没有办法告诉Maven始终使用最新的可用版本(来自存储库)

您是否可能依赖于在开发过程中明显变化很大的开发版本

与增加开发版本的版本不同,您可以只使用快照版本,在必要时覆盖该版本,这意味着您不必在每次细微更改时都更改版本标记。类似于1.0-SNAPSHOT的东西


但也许你正在努力实现其他目标;)

您是否可能依赖于在开发过程中明显变化很大的开发版本

与增加开发版本的版本不同,您可以只使用快照版本,在必要时覆盖该版本,这意味着您不必在每次细微更改时都更改版本标记。类似于1.0-SNAPSHOT的东西

但也许你正在努力实现其他目标;)

请查看(“依赖项版本范围”部分)。你可能想做的是

[1.2.3,]
这些版本范围是在Maven2中实现的。

请查看(“依赖版本范围”一节)。您可能需要做的是

[1.2.3,]
这些版本范围在Maven2中实现。

注意:

上述
最新版本
发行版
元版本是在6年前发布的。 (对于常规依赖项,它们仍然可以很好地工作。) 有关插件依赖项,请参阅此


如果你总是想使用最新版本,Maven有两个关键字可以作为版本范围的替代。你应该小心使用这些选项,因为你不再控制你正在使用的插件/依赖项

当您依赖于插件或依赖项时,可以使用最新或发布的版本值。最新是指特定工件的最新发布或快照版本,即特定存储库中最近部署的工件。发布是指存储库中最后一次非快照发布。一般来说,它不是最佳practice设计依赖于工件的非特定版本的软件。如果您正在开发软件,您可能希望使用RELEASE或LATEST作为一种方便,以便在发布第三方库的新版本时不必更新版本号。发布软件时,您应始终确保您的项目使用特定版本以减少生成或项目受不受您控制的软件版本影响的可能性。如果使用最新版本,请谨慎使用

有关更多详细信息,请参阅。或参阅上的此文档,其中:

  • 方括号(
    [
    &
    ]
    )表示“已关闭”(包括在内)
  • 括号(
    &
    )表示“打开”(独占)
下面是一个演示各种选项的示例。在Maven存储库中,com.foo:my foo具有以下元数据:


com.foo
当然可以指定,仅在此处显示相关内容):

声明精确版本(将始终解析为1.0.1):

[1.0.1]
声明显式版本(将始终解析为1.0.1,除非发生冲突,此时Maven将选择匹配的版本):

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

[1.0.0,2.0.0)
声明开放式版本范围(将解析为2.0.0):

[1.0.0,]
声明版本为最新版本(将解析为2.0.0)(从maven 3.x中删除)

最新版本
将版本声明为发行版(将解析为1.1.1)(从maven 3.x中删除):

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


值得强调的是,任何允许Maven选择依赖版本(最新版本、发行版和版本范围)的方法都可能导致构建时问题,因为更高版本可能会有不同的行为(例如,依赖插件先前将默认值从true切换为false,结果令人困惑)

因此,在发行版中定义准确的版本通常是一个好主意。正如所指出的,是一个方便的工具,用于更新依赖版本,特别是和目标。

注意:

上述
最新版本
发行版
元版本是在6年前发布的。 (对于常规依赖项,它们仍然可以很好地工作。) 有关插件依赖项,请参阅此


如果你总是想使用最新版本,Maven有两个关键字可以作为版本范围的替代。你应该小心使用这些选项,因为你不再控制你正在使用的插件/依赖项

当您依赖于插件或依赖项时,可以使用最新或发布的版本值。最新是指特定工件的最新发布或快照版本,即特定存储库中最近部署的工件。发布是指存储库中最后一次非快照发布。一般来说,它不是最佳practice设计依赖于工件非特定版本的软件。如果您正在开发软件,您可能希望使用RELEASE或LATEST作为一种方便,这样您就不必更新版本号
mvn -U dependency:copy -Dartifact=com.foo:my-foo:LATEST
// pull the latest snapshot for my-foo from all repositories
<properties>
    <myname.version>1.1.1</myname.version>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <properties>
                    <property>
                        <name>myname.version</name>
                        <dependencies>
                            <dependency>
                                <groupId>group-id</groupId>
                                <artifactId>artifact-id</artifactId>
                                <version>latest</version>
                            </dependency>
                        </dependencies>
                    </property>
                </properties>
            </configuration>
        </plugin>
    </plugins>
</build>
mvn versions:update-properties validate
[INFO] Updated ${myname.version} from 1.1.1 to 1.3.2
<properties>
    <spring.version>3.1.2.RELEASE</spring.version>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

</dependencies>
<dependency>
    <groupId>yilin.sheng</groupId>
    <artifactId>webspherecore</artifactId>
    <version>LATEST</version> 
</dependency>