2

我正在使用 Apache Maven 将我们的产品发布到生产环境,截至目前,创建的结果 jar 文件没有附加版本号。我想附加当前的 pom.xml 版本号(我知道该怎么做),但我需要我们的安装程序脚本(基本上是带有额外参数的 java -jar 命令)来默认访问最新版本的安装程序。

假设我的部署文件名为foo.jar. 我的脚本基本上是java -jar foo.jar

相反,我希望我的部署目录包含foo-4.0.0.jarfoo-4.0.1.jarfoo-4.0.2.jar等。

我想创建一个运行最高版本 foo 的 bash 脚本。

我看过按创建日期排序,但我可以立即想到可能效果不佳的场景。我考虑过按修改日期来做,然后手动touch输入我要安装的文件,但这种想法也很糟糕。

显然,我需要拆分名称(可能使用正则表达式)并隔离版本号(可能是名称中最后一个破折号和最后一个句点的子字符串?)并以某种方式对它们进行排序。排序可能是我最关心的问题......以及重新关联文件。

如果这太复杂了,理论上我可以制作一个 Java 文件来执行此操作(很明显我的主要语言是 Java 吗?),但理想情况下它只是一个 bash 脚本。

谢谢

4

1 回答 1

5

您可以使用sort,指定分隔符和要排序的键集,例如

$ ls *.jar | sort -t- -k2 -V -r

将使用版本号(-V )对您的 jar 进行反向(-r )排序,使用-t-将版本号与 jar 名称分开,并使用-k2(您的版本号)对第二个字段进行排序

在我的测试目录中,我得到:

a-2.2
a-2.1
a-2.0
a-1.50
a-1.10
a-1.3.1
c-1.3.0.1
a-1.3
a-1.2.9
b-1.2.8
a-1.2

看起来不错。

将上述内容通过管道head -1为您提供顶部条目。

于 2012-08-16T16:34:17.100 回答