2

私は Apache Maven を使用して製品を本番環境にリリースしていますが、現時点では、作成された結果の jar ファイルにはバージョン番号が追加されていません。現在の pom.xml のバージョン番号を追加したい (方法はわかっています) が、デフォルトでインストーラーの最新バージョンにアクセスするには、インストーラー スクリプト (基本的には追加のパラメーターを指定した java -jar コマンド) が必要です。

私の展開ファイルがfoo.jar. 私のスクリプトは基本的にjava -jar foo.jar

foo-4.0.0.jar代わりに、展開ディレクトリに、foo-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 ) ソートを使用して逆方向 ( -r ) に jar をソートし、 -t-を使用してバージョン番号を jar 名から分離し、-k2 (バージョン番号)を使用して 2 番目のフィールドでソートします。

私のテストディレクトリでは、次のようになります。

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 に答える