为啥我必须从我的 pom 中删除一个依赖项,然后再将其添加回来并安装以获取最新版本的 maven 包?

Posted

技术标签:

【中文标题】为啥我必须从我的 pom 中删除一个依赖项,然后再将其添加回来并安装以获取最新版本的 maven 包?【英文标题】:why do I have to remove a dependency from my pom before adding it back and installing to get the latest version of my maven package?为什么我必须从我的 pom 中删除一个依赖项,然后再将其添加回来并安装以获取最新版本的 maven 包? 【发布时间】:2020-11-03 02:03:08 【问题描述】:

我在 GitHub 包注册表上托管了一个 Maven 包。

每当我对包进行更新时,我都会运行 mvn deploy 来发布更改,但如果我只是在依赖应用程序上运行mvn install,它似乎不会安装最新版本的包。只有在删除 pom.xml 然后将更改加载到 IntelliJ 中,然后将其添加回来并运行 mvn install 之后,它似乎才能获得包的新发布。

这是我的settings.xml 文件:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <activeProfiles>
        <activeProfile>github</activeProfile>
    </activeProfiles>

    <profiles>
        <profile>
            <id>github</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>https://repo1.maven.org/maven2</url>
                    <releases><enabled>true</enabled></releases>
                    <snapshots><enabled>true</enabled></snapshots>
                </repository>
                <repository>
                    <id>github</id>
                    <name>GitHub COMPANY NAME Apache Maven Packages</name>
                    <url>https://maven.pkg.github.com/***********</url>
                </repository>
            </repositories>
        </profile>
    </profiles>

    <servers>
        <server>
            <id>github</id>
            <username>TaylorBurke</username>
            <password>****************</password>
        </server>
    </servers>
</settings>

每次发布​​更改时都需要升级包的版本吗?也许 Maven 存在配置问题?或者这可能是 IntelliJ 中 Maven 插件的本质?

【问题讨论】:

您是否在每次安装之间更改了版本? 在开发的时候使用SNAPSHOT依赖,这样就不用每次都更新版本了。 @khmarbaise 我在依赖应用程序的 pom.xml 中保持版本相同,因为每次进行更改时我都不会更新包中的版本。我应该吗? @CrazyCoder 我目前使用的是 0.0.3-SNAPSHOT 版本 Maven中有一个默认的更新策略(通常设置在settings.xml)。这也应该在 IntelliJ 中配置。或者,您可以更改 IntelliJ 也将拾取的 settings.xml 文件中的行为.. 【参考方案1】:

如果您希望 IntelliJ IDEA 更新 sync 上的快照,请选择 this checkbox,如果您不更新版本,请使用 SNAPSHOT 依赖项:

设置(macOS 上的首选项)|构建、执行、部署 |构建工具 |马文 | 始终更新快照

确保单击 Maven 工具窗口中的 重新导入 按钮以同步更改。

【讨论】:

我希望会是这样,因为该框之前没有被选中,但即使在重新启动 IntelliJ 之后它似乎也没有解决问题...... 您是否强制重新导入?

以上是关于为啥我必须从我的 pom 中删除一个依赖项,然后再将其添加回来并安装以获取最新版本的 maven 包?的主要内容,如果未能解决你的问题,请参考以下文章

为啥有排除 pom.xml / maven 中依赖项的依赖项的选项?

为啥不能使用pom文件中的maven依赖?

为啥 Intellij 在 pom.xml 中找不到任何 Maven 依赖项?

为啥我的 Spring Boot 启动器没有将其依赖项带到项目中?

为啥 JavaMoney 依赖项是 POM 包?

为啥依赖项不包含在 JAR 文件中? [复制]