2016-12-09 3 views
0

私は以下の問題があります。私の監督の下にないたくさんの外部ジャーのあるディレクトリがあるとします。これらのjarファイルは、今libディレクトリMavenは複数のjarファイルを1つの依存ファイルにインポートします

lib 
|_folder1 
| |_jar1.jar 
| |_jar2.jar 
|_folder2 
| |_jar3.jar 
|_jar4.jar 

にライブラリの新しいバージョンが、私は自分のアプリケーションに統合する必要があるlibフォルダのコピーを持ってリリースされるたびに保存されます。

新しいプロジェクトやライブラリの変更を開始するたびに、無数のジャーを統合したくないので、私は多分、それらのすべてのジャーをホストされている1つのライブラリ私のローカルのMavenリポジトリによって。

したがって、ディレクトリ全体をクロールしてすべてのjarファイルを検索し、ローカルリポジトリにインストールするスクリプトを作成することをお勧めします。

SET @libPath="C:\path\to\lib" 
SET @groupId="group.id.custom.lib" 
SET @artifactId="custom-lib" 
SET @version="1.0" 
SET @packaging="jar" 
for /r %@libPath% %%i in (*.jar) do mvn install:install-file^
    -Dfile="%%i"^
    -DgroupId=%@groupId%^
    -DartifactId=%@artifactId%^
    -Dversion=%@version%^
    -Dpackaging=%@packaging% 

アイデアはちょうど私のpom.xmlファイルに依存関係を追加し、それを行うことが持っているだろう:

<dependency>   
     <groupId>group.id.custom.lib</groupId> 
     <artifactId>custom-lib</artifactId> 
     <version>[1.0,)</version> 
</dependency> 
ここ

は、スクリプトの最初のバージョンは次のようになります

スクリプトはすべてのファイルをクロールしますが、見つかったjarファイルのみをローカルのリポジトリに置き、以前にインストールされたjarファイルを上書きします。

スクリプトの助けを借りてこれを達成する方法があるかどうかです。

挨拶

[編集:]エセックス少年のコメントの後、私はこれに私のスクリプトを適応してきました:動作しているようだ

SET @libPath="C:\path\to\lib" 
SET @groupId="group.id.custom.lib" 
SET @artifactId="custom-lib" 
SET @version="1.0" 
SET @packaging="jar" 
SET @tempDir="C:\Temp\temp-dir" 
SET @tempJar="temp.jar" 
if not exist %@tempDir% mkdir %@tempDir% 
cd %@tempDir% 
del *.* /f /q 
for /r %@magicDrawLib% %%i in (*.jar) do copy %%i %@tempDir% 
for /r %@tempDir% %%j in (*.jar) do jar -xvf %%j del %%j 
jar -cvf %@tempJar% * 
mvn install:install-file^
    -Dfile=%@tempJar%^
    -DgroupId=%@groupId%^
    -DartifactId=%@artifactId%^
    -Dversion=%@version%^
    -Dpackaging=%@packaging% 

。私はそれを検証するために結果のMaven依存関係をテストする必要があります。

答えて

1

まず、既存のjarを別のものに上書きすると、mavenを使用するオブジェクトが無効になります。すべての成果物は不可能であると考えられます(決して変更することはできません)。新しいjarファイルを持っている場合は、新しいバージョンであり、リポジトリに追加する必要があります。

私はスクリプトは良いアイデアだと思います。

複数の人がこのリポジトリを共有している場合は、自分の共有リポジトリを作成します。https://www.jfrog.com/open-source/は優れた無料のものです。

+0

あなたの回答をありがとうございます。もちろん、既存のjarファイルを別のものに上書きするのは悪い考えです。これがスクリプトが機能しない理由です(私はこのことを明確にしていないとすみませます。最初の投稿)。しかし、この情報は、すべてのjarファイルを1つのMaven依存ファイルにまとめるのに役立たないようです。 – Scyla101

+0

あなたの質問を誤解して申し訳ありません、なぜあなたは、各jarを一時ディレクトリにコピーし、explode(jar xvf %% ii)してからそれを削除してから新しいjar(jar cvf temp.jar * )そして、あなたのmavenリポジトリにtemp、jarファイルを追加します。 –

+0

返事をありがとう。私は働いていると思われるスクリプトで質問を更新しました。たぶん、私はあなたに適切なクレジットを与えることができるようにあなたの答えを更新することができます。 – Scyla101

関連する問題