0

私のディレクトリには多くのjarファイルがあります:

  • some-lib-2.0.jar
  • some-lib-2.1-SNAPSHOT.jar
  • some-lib-3.RELEASE.jar
  • some-lib-R8.jar
  • some-lib-core-1.jar
  • some-lib-2.patch2.jar
  • some-lib-2-alpha-4.jar
  • some-lib.jar
  • some-lib2-4.0.jar

ファイル名からライブラリ名とバージョンを取得するにはどうすればよいですか?

regex ((?:(?!-\d)\S)+)-(\S*\d\S*(?:-SNAPSHOT)?).jar$ は抽出名とバージョンに有効ですか?

4

2 に答える 2

1

JAR ファイル名のバージョン番号は単なる規則であり、Maven でビルドされた JAR のデフォルトです。上書きされている可能性があり、ファイル名だけからバージョン番号を読み取ることは常に信頼できるとは限りません。

JAR からバージョン番号を読み取る信頼性の高い方法は、JAR ファイル内を調べることです。ここでは、JAR のビルド方法に応じていくつかのオプションがあります。

  • そこからバージョンを見てMETA-INF/maven/.../pom.properies読んpom.xmlでください - これは Maven でビルドされたバイナリに存在するはずです
  • Specification-VersionまたはImplementation-Versionプロパティの下の META-INF/MANIFEST.MF に存在する場合はバージョン番号

これが失敗した場合は、他に利用可能な情報がないため、JAR 名からバージョン番号を読み取る方法にフォールバックします。

于 2013-04-02T19:09:39.093 に答える
0

命名ポリシーはライブラリごとに異なる可能性があるため、1 つのルールを使用してパッケージ名から名前/バージョンを抽出することはできません。詳細については、プロジェクト ドキュメントを確認する必要があります。

Maven の場合、構成オプションを使用して、ビルドされたアーティファクトの最終的な名前をfinalName pom.xml構成できます。Maven docs は、pom 構造の優れた紹介を提供します。以下は、ドキュメントの例です。

<build>
    ...
    <finalName>${artifactId}-${version}</finalName>
    ...
</build>
于 2013-04-02T18:15:23.117 に答える