0

如何制作一个shell script将执行文件的jar文件,无论其版本如何?

假设我有一个文件:

my-jar-file-1.0.0-SNAPSHOT-executable.jar

我想要一个shell脚本,它会按照以下方式做一些事情

#!/bin/bash
java -some -other -options -jar my-jar-file-1.0.0-SNAPSHOT-executable.jar

但它应该执行它的任何版本,所以

  1. my-jar-file-1.0.0-SNAPSHOT-executable.jar

  2. my-jar-file-1.1.0-SNAPSHOT-executable.jar

  3. my-jar-file-1.0.1-SNAPSHOT-executable.jar

都应该由同一个脚本执行。

我怎样才能做到这一点?

4

3 回答 3

2

如果 jar 的名称匹配模式my-jar-version.jar

java -jar `ls my-jar*.jar`
于 2013-03-04T10:09:47.370 回答
1

我们也可以反过来想,为什么不给 jar 起一个最终名称,它会保持不变,并且不需要修改脚本。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <finalName>myname</finalName>
    <configuration>
</plugin>

如果版本号是强制性的,你可以编写一个脚本来模式搜索那个特定的 jar。并相应地运行它。

我使用 ant 做了类似的工作,但目标不同,希望这会有所帮助。

于 2013-03-04T10:09:19.253 回答
1

在 bash 脚本中试试这个:

for jarfile in my-jar-file-*-SNAPSHOT-executable.jar; do
    java -some -other -options -jar $jarfile
    echo "done for: $jarfile"
done
于 2013-03-04T10:14:40.627 回答