2016-09-05 28 views
0

サードパーティの依存関係を持つmavenプロジェクトがあります。後で自動的にアプリケーションに提供されるため、JARには含まれません。パッケージ化されたJARにローカル依存関係を含める

さらに私は他のいくつかの依存関係を持っています。私自身のライブラリであり、リポジトリの外でのみローカルで利用できます。私は、いつものように依存関係を追加

<!-- local repo --> 
<repository> 
    <id>local-maven-repo</id> 
    <url>file:///${project.basedir}/lib</url> 
</repository> 

:だから私は、地元のレポを作成し

<dependency> 
    <groupId>de.cydhra</groupId> 
    <artifactId>ABCommands</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <scope>compile</scope> 
</dependency> 

私が正しく、依存関係は今、私のJARに含まれるべきスペックMavenを覚えているときにスコープ理由"コンパイル"です(私はランタイムも試みました:同じ結果)。しかし、依存関係は "mvnパッケージ"を実行するとき完全に無視されます。

もう一度:自分のプロジェクトに依存関係を組み込む方法を知りたいのですが、完成したアプリケーションにそれらを組み込む方法を知りたくありません。

私は現在、maven-compilerプラグインを使用してjarファイルを生成しています。グーグルでは、私はmaven jarプラグインについて聞いたことがあります。これには、クラスパスを含めるオプションがあります。このクラスパスは、依存関係をマニフェストに書き込んでいます。さらに、mavenアセンブリプラグインは依存関係を持つjarを生成することができます。依存関係にはすべての依存関係が含まれている必要があります。それで私は何が欠けているのですか?

+0

'ABCommands'は' provided'スコープが、 'compile'を持っていません。なぜあなたは '提供された'依存関係について言及していますか?あなたは、提供された依存関係を持つuber jarを作成したいですか? [ここに似て](http://stackoverflow.com/questions/8166753/how-to-include-dependency-with-provided-scope-with-maven-assembly-plugin)? – Tunaki

+0

いいえ、ABCommandsだけが依存するわけではありません。他のいくつかは、その範囲として提供しています。 – Cydhra

+0

シェード・プラグインには、提供される依存関係は含まれません。コンパイルとランタイムの依存関係のみが含まれます。そして、アセンブリプラグインの 'jar-with-dependencies'には'提供された '依存性も含まれません(デフォルトで) – Tunaki

答えて

0

使用Mavenのshade plugin 、あなたのプロジェクトをコンパイルするとき、
jarファイルをプロジェクトの依存関係、その中に含まれています

+0

それは動作します。それ以上の構成は必要ありません。ワオ。これは、mavenを使用している間は私にとっては一度も起こりませんでした。 – Cydhra

+0

@Cydhraそれを聞いてうれしいと私はあなたが探していた答えが本当にそれが受け入れられるようにこの答えを選択していただければ幸いです – HTxL

+0

はい、私はコメントすることができませんでした。 – Cydhra

関連する問題