当前位置: 首页 > 知识库问答 >
问题:

在JAR部署后自动更新Maven依赖项

邓子濯
2023-03-14

我有一个Java Maven项目,在pom.xml文件中定义了一些依赖项。这些依赖项往往每个月都有较新的版本,所以我想部署一个JAR文件,在每次启动中自动检查那些依赖项的最新版本(而不需要重新构建Java Maven项目)。

有可能用Maven实现这一点吗?

我知道Versions Maven插件对于下载依赖项的最新版本是有用的,但仅当“重新构建”项目时(而不是在部署的JAR中)。我还知道我可以使用这样的表达方式:

<version>[1.8,]</version>

但是,同样地,这些依赖项只能在构建项目之后下载。我想在用户每次启动应用程序时自动更新依赖项。

更新:

我要自动更新的依赖项是“Selenium-Chrome-Driver”。我的应用程序使用Chrome驱动程序启动Google Chrome浏览器。

问题是Chrome驱动每隔几个月更新一次,老版本变得“过时”。结果,几个月后,部署的JAR试图用较旧版本的Chrome驱动程序启动浏览器,但却不起作用。由于这个原因,我需要自动更新这个依赖关系。否则,我将不得不每X个月部署一个新的JAR。

共有1个答案

谢同化
2023-03-14

多年来我也遇到过同样的问题,有一个库可以解决这个问题,https://github.com/bonigarcia/webdrivermanager,但我自己没有尝试过

目前正在使用此脚本(ubuntu)

# https://gist.github.com/ziadoz/3e8ab7e944d02fe872c3454d17af31a5
# https://gist.github.com/birdsarah/23312f1d7cbd687ac376c95662254773

# This script checks & downloads latest chromeDriver and geckoDriver IF needed.
# New drivers are extracted and copied to $driversDestination
# IMPORTANT: Remember to change $driversDestination variable below to match your case
# You can call this script before launching your test suite so you always get latest drivers each run

os=linux64
driversDestination=../dependencies/browser-drivers/

if [ -e chromedriver_last.txt ]
then
    chromedriver_last_download=`cat chromedriver_last.txt`
fi

chromedriver_latest_version=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
if [ "$chromedriver_last_download" = "$chromedriver_latest_version" ]; then
    echo "Already has last chrovedriver version" $chromedriver_latest_version
else
    echo "Updating chromedriver from " $chromedriver_last_download "to" $chromedriver_latest_version
    wget -N http://chromedriver.storage.googleapis.com/$chromedriver_latest_version/chromedriver_$os.zip -O chromedriver_linux64.zip
    echo "$chromedriver_latest_version" > "chromedriver_last.txt"
    unzip -o chromedriver_$os.zip -d $driversDestination
    rm chromedriver_$os.zip
fi

if [ -e geckodriver_last.txt ]
then
    geckodriver_last_download=`cat geckodriver_last.txt`
fi

geckodriver_latest_version=`curl -s https://api.github.com/repos/mozilla/geckodriver/releases/latest | jq -r ".tag_name"`

if [ "$geckodriver_last_download" = "$geckodriver_latest_version" ]; then
    echo "Already has last geckodriver version" $geckodriver_latest_version
else
    echo "Updating geckodriver from " $geckodriver_last_download "to" $geckodriver_latest_version
    wget https://github.com/mozilla/geckodriver/releases/download/$geckodriver_latest_version/geckodriver-$geckodriver_latest_version-$os.tar.gz -O geckodriver.tar.gz
    echo "$geckodriver_latest_version" > "geckodriver_last.txt"
    tar -xvzf geckodriver.tar.gz
    rm geckodriver.tar.gz
    chmod +x geckodriver
    mv geckodriver $driversDestination
fi
 类似资料:
  • 我是Maven开发的初学者,需要我们的帮助来解决这个问题。我可以看到, 只有下面的罐子可用 我也得到下面的错误在 生成过程中发生错误。在项目“cim”上运行生成器“Maven Project builder”时出错。无法计算生成计划:插件组织。阿帕奇。专家plugins:maven resources plugin:2.6或其依赖项之一无法解析:无法读取组织的工件描述符。阿帕奇。专家插件:mave

  • 我正在为Eclipse使用m2e Maven插件。我有5个eclipse项目。一个web应用程序项目,然后4个项目作为我的web应用程序的jars依赖项。

  • 主要内容:自动化部署的实现方式,maven-release-plugin 插件的使用Maven 项目的部署通常包括以下步骤: 将项目代码提交到 SVN 或 Git 等版本控制系统中,并进行标记。 从 SVN 或 Git 上下载完整的项目代码。 构建应用。 将构建输出的 WAR 或 JAR 文件存放在指定的公共网络位置中。 从指定网络中获取文件,并部署到生产环境上。 更新项目文档以及版本号。 以上这些工作通常由多个不同的团队协作完成,例如,项目研发人员负责项目代码的提交,项目管理员

  • 问题内容: 是否有任何预先存在的Maven插件或命令来更新POM中的依赖关系?示例:(如果这是在我的POM中) 有没有可以运行的命令或插件来将依赖关系更新为: 问题答案: 尝试使用maven-versions-plugin,尤其是versions:use-latest-versions目标。

  • MVNRepository通常为每个依赖项列出“版本”和“更新”。 如果我发布自己的包,如何指定“更新”版本 Maven在解决传递依赖时使用了哪个依赖项?所以如果我的包依赖于包A,它依赖于包B,版本=1.0,更新=1.1。我会得到哪个版本的B?

  • 问题内容: 我试图将我的Maven项目部署到Glassfish 4,但部署失败时出现以下异常: 也许值得一提的是它的构建还不错。.我不知道它要寻找的依赖项,对我来说有点神秘。任何帮助将不胜感激。 编辑-根据要求,我的POM文件: http://maven.apache.org/xsd/maven-4.0.0.xsd“> 4.0.0 问题答案: 该问题是由WAR文件中包含的lib 引起的。该lib已