【问题标题】:How can i get version number of jar and update version number in startup script?如何在启动脚本中获取 jar 的版本号和更新版本号?
【发布时间】:2017-03-17 11:31:56
【问题描述】:

我已经创建了 RPM 和 RPM 包含的 Jar 文件。我有启动脚本,它将执行 Jar 文件。

我已经创建了启动脚本并包含了要执行的 jar 文件名和路径。 但是 Jar 文件有版本号,它会随着每个新的构建而改变。 我需要在我的脚本中更新该版本号。我该怎么做? 例如:Jar 文件 --- sample-1.0.2.jar 在脚本中,我给出了 PATH_TO_JAR=/opt/sample.jar,但是这个 sample.jar 由于版本号没有执行。

我在 /opt/bin 文件夹中的启动脚本。在执行我的脚本时,PATH_TO_JAR=/opt/sample-1.0.2.jar 必须更新版本。 如何更新脚本中的 jar 版本号?

【问题讨论】:

  • 你想做什么?您是否希望脚本自动选择您目录中最新版本的 jar?您是否正在寻找一种自动化方式来更改脚本作为“部署”新版本 jar 的一部分?
  • 是的!!!我正在寻找脚本或命令来更新 PATH_TO_JAR 中的 Jar 版本。然后,jar 文件将在我的脚本中使用 Java -jar 命令执行。 Jar 文件在 /opt 目录中,脚本在 /opt/bin 中。如何获取 Jar 版本?

标签: bash shell unix


【解决方案1】:

我认为问题归结为按版本字符串对jars 进行排序。这是一个示例命令行 sn-p,它提取具有最新版本号的 jar。

假设您有两个文件,您不能只按字典顺序 sort 它们:

sample-10.0.2.jar
sample-2.3.4.jar

这里ls -1 按上面给出的顺序将它们放入文件中,因为10 按字母顺序排在2 之前。

假设文件不包含空格,这是一种按版本字符串排序的可移植方式

ls -1 | awk -F- '{print $2 " " $0}' | sort -t. -n -k1,3 | awk '{print $2}'

稍微分解一下,这个片段会产生以下内容:

ls -1 | awk -F- '{print $2 " " $0}'

提取- 之后的所有内容并将其打印为该行的第一个“单词”。

10.0.2.jar sample-10.0.2.jar
2.3.4.jar sample-2.3.4.jar

这是前三个字段中的数字sort

sort -t. -n -k1,3

我们实际上想要反转这个,所以最大的版本号在顶部,然后我们想要获取第一个项目。我们可以通过将-r 传递给sort 来反转排序,并使用awk 'NR == 1 {print $1}' 获取第一项的第一个字段

ls -1 | awk -F- '{print $2 " " $0}' | sort -t. -n -r -k1,3 | awk 'NR == 1 {print $2}'

这给了我们

sample-10.0.2.jar

因此,将所有这些放在一起,您可以获取一个脚本来更新PATH_TO_JAR 环境变量

假设的update-path.sh 脚本

# update path to jar, look at all .jar files in /opt
# find the one with the largest version string (assuming three components)
jar_name=$(ls -1 /opt/*.jar | \
    awk -F- '{print $2 " " $0}' | \
    sort -t. -n -r -k1,3 | \
    awk 'NR == 1 {print $2}')
PATH_TO_JAR=/opt/"$jar_name"
export PATH_TO_JAR

要使用它,. update-path.shsource update-path.sh

【讨论】:

  • 感谢您提供详细的脚本。在我的目录中,每次我只有一个罐子。所以不需要去排序。我只想在我的脚本中选择那个 jar 版本。当我通过我的工作创建新的 RPM 时,Jar 版本以内部版本号作为版本进行了更新。如果我在我的机器上安装那个 RPM,Jar 文件会被解压到目录中。我将根据我的要求修改脚本并使用它。再次感谢!!!
猜你喜欢
  • 2014-08-09
  • 1970-01-01
  • 2010-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多