jarファイルをファイル名そのままにローカルのMavenにインストールしたいと思っています。
環境は
- OS:Windows10 Pro
- Maven: バージョン3.8.3
にて、以下のコマンドを実行
mvn install:install-file -DgroupId=com.hoge -DartifactId=fuga -Dversion=1.0.0 -Dpackaging=jar -Dfile=./fuga.jar
その結果、
C:\Users\myuser\.m2\repository\com\hoge\fuga\1.0.0\fuga-1.0.0.jar
が作成されましたが、
fuga-1.0.0.jar
の部分は
fuga.jar
のままとしてインストールしたいです。
そのような方法はありますでしょうか?
-Dversion=は省略できないようなので、方法がわからず困っています。
pom.xmlへの依存関係の記載は以下の通りです。
<dependencies> <dependency> <groupId>com.hoge</groupId> <artifactId>fuga</artifactId> <version>1.0.0</version> </dependency> </dependencies>
宜しくお願い致します。
ちなみにjarファイルを変えたくない理由として、
提供されているfuga.jarはファイル名を変更すると利用できなくなるという制約があるためです。
[追記]ライブラリ名が変更された状態でライブラリに含まれるクラスのインスタンス生成をしようとした際に出力される例外を載せます。
java.lang.Error: Illegal library file name [C:\AnypointStudio\plugins\org.mule.tooling.server.4.4.0.ee_7.11.0.202203031822\mule\apps\ydl-sys-svf-api\repository\jp\co\fit\vfreport\svfrclient\1.0.0\svfrclient-1.0.0.jar] at jp.co.fit.vfreport.client.FileLocator.getJavaLibraryPath(FileLocator.java:97) at jp.co.fit.vfreport.client.SvfrProperties.getBuildNumber(SvfrProperties.java:616) at jp.co.fit.vfreport.client.SvfrProperties.<clinit>(SvfrProperties.java:23) at jp.co.fit.vfreport.SvfrClient.<init>(SvfrClient.java:22) at jp.co.fit.vfreport.SvfrClient.<init>(SvfrClient.java:35)
pom.xmlの設定も提示してください。
コメントありがとうございます。
pom.xmlへの依存関係の記載は以下の通りです。
```
<dependencies>
<dependency>
<groupId>com.hoge</groupId>
<artifactId>fuga</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
```
また、`piyo.jar`としておりましたが、`fuga.jar`の誤りだったため、訂正させていただいております。
コードになるので質問本文に提示してもらえればと。
本文のほうに追記いたしました。
そもそもの動機は何ですか。JARのファイル名にバージョン番号がついていると、どういう不都合があるのですか。
質問本文にも少し書いていますが、今回提供されて使用しようとしているfuga.jarはインスタンス生成時にファイル名をチェックしているらしく、元のファイル名から変更されていると例外を投げる仕様となっていようです(fuga.jarは外部の製品のためこの仕様の変更は不可)。
そのため、バージョンを付与しないファイル名で使用したいのです。
クラスローダーで読み込まれたJARのファイル名をチェックするというのは、事実上不可能です。
おそらく、読み込んだクラスのバージョンをチェックしているものと思います。
「元のファイル名から変更されていると例外を投げる」ときの、エラーメッセージとスタックトレースを追加してらもえますか。
メッセージは出力されないため、スタックトレースを載せました。
宜しくお願い致します。