Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我如何告诉Maven使用最新版本的依赖项?_Java_Maven_Dependencies_Maven 2_Maven Metadata - Fatal编程技术网

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的东西 但也许你正在努力实现其他目标;) 请查看(“依赖项版本范围”部分)。你可能想做的是 [1

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


奇妙公司
梦想图书馆
1.2.3

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

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

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

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

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

[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,结果令人困惑)


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

现在我知道这个主题已经很老了,但阅读问题和OP提供的答案,似乎这实际上可能是对他的问题的一个更好的答案:

以下目标尤其有用:

  • 版本:使用最新版本在pom中搜索所有版本 这是一个更新的版本和 将其替换为最新版本 版本
  • 版本:使用最新版本在pom中搜索所有非快照 更新版本 释放并将其替换为 最新版本
  • 版本:更新属性更新在 项目,使其对应于 的最新可用版本 特定的依赖项。这可以是 如果需要一组依赖项,则此选项非常有用 必须全部锁定到一个版本
还提供了以下其他目标:

  • 版本:显示依赖项更新扫描项目的依赖项和 制作一份关于这些问题的报告 具有更新版本的依赖项 版本可用
  • 版本:显示插件更新扫描项目的插件和 生成这些插件的报告 有更新的版本可供选择
  • versions:updateparent更新项目的父部分,以便 它引用了最新的 可用版本。例如,如果 你使用一个公司根POM,这个 如果你需要的话,目标是有帮助的 确保您使用的是最新版本 公司根POM的版本
  • 版本:更新子模块更新子模块的父部分 项目的子模块,因此 版本与
    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>