質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

3918閲覧

Mavenでインストールするjarファイル名にバージョンを含めたくない

plue

総合スコア71

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/03/29 07:39

編集2022/03/31 02:36

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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/03/29 11:13

pom.xmlの設定も提示してください。
plue

2022/03/29 11:46 編集

コメントありがとうございます。 pom.xmlへの依存関係の記載は以下の通りです。 ``` <dependencies> <dependency> <groupId>com.hoge</groupId> <artifactId>fuga</artifactId> <version>1.0.0</version> </dependency> </dependencies> ``` また、`piyo.jar`としておりましたが、`fuga.jar`の誤りだったため、訂正させていただいております。
m.ts10806

2022/03/29 11:39

コードになるので質問本文に提示してもらえればと。
plue

2022/03/29 11:46

本文のほうに追記いたしました。
nukasa

2022/03/30 02:30

そもそもの動機は何ですか。JARのファイル名にバージョン番号がついていると、どういう不都合があるのですか。
plue

2022/03/30 02:38

質問本文にも少し書いていますが、今回提供されて使用しようとしているfuga.jarはインスタンス生成時にファイル名をチェックしているらしく、元のファイル名から変更されていると例外を投げる仕様となっていようです(fuga.jarは外部の製品のためこの仕様の変更は不可)。 そのため、バージョンを付与しないファイル名で使用したいのです。
nukasa

2022/03/30 08:15

クラスローダーで読み込まれたJARのファイル名をチェックするというのは、事実上不可能です。 おそらく、読み込んだクラスのバージョンをチェックしているものと思います。 「元のファイル名から変更されていると例外を投げる」ときの、エラーメッセージとスタックトレースを追加してらもえますか。
plue

2022/03/31 02:37

メッセージは出力されないため、スタックトレースを載せました。 宜しくお願い致します。
guest

回答1

0

要は「任意のファイル名で生成したい」ということですね。
build→finalNameで成果物のファイル名を指定できたと思います。

バージョンにより多少変わるとは思うので、合致しそうなのをチョイスしてみてください。
https://qiita.com/blue_islands/items/818c3abfc9319a18fc03
https://blog.okazuki.jp/entry/2018/08/08/110729
https://clash-m45.hatenablog.com/entry/20120615/1339763042

投稿2022/03/30 02:47

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

plue

2022/03/30 02:54

誤解を与えて申し訳ないのですが、 今回開発しているMavenプロジェクトを任意の名前で生成したいというわけではなく、 今回開発しているMavenプロジェクトと依存関係にある外部ライブラリである「fuga.jar」を「fuga.jar-1.0.0.jar」でなく、「fuga.jar」としてMavenプロジェクトに取り込みたいというのが今回実現したい内容となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問