2013-07-25 5 views
6

助けや指針は本当に高く評価されます。 ビルド時にプロジェクトのすべての依存関係JARのマニフェストファイルに2つのフィールドを注入する必要があります。Maven:依存関係JARのマニフェストファイルを変更する

依存関係のjarファイルはすでにビルドされており、リポジトリから取得されます。 JARのマニフェストファイルを取得して、現在のpomファイルの変数で変更する方法を見つける必要があります。 これを行う方法を知っている人はいないでしょうか? あなたの時間と返信をお寄せいただきありがとうございます

+6

あなたはなぜそれをしたいのですか?それらのアーティファクトは既に構築されています。つまり、不変であることを意味します。これらの成果物をmaven-dependency-pluginとmaven-assembly-pluginの組み合わせで変更することはできますが、本当に大きなpomファイルが生成されます。もう一方では、すでにビルドされた成果物をMavenのアイデアに反するものに変更しています。 – khmarbaise

+0

@ Wimpie解決策を見つけましたか? –

+0

'maven-assembly-plugin'では、マニフェストの設定を指定することができますが、現在[バグ](http://jira.codehaus.org/browse/MASSEMBLY-450)が存在するため、既存のマニフェストをマージすることはできませんマニフェストエントリが追加されます。私は同じことを試みて失敗したので、これを見つけました。 – user944849

答えて

0

これは実際にはMavenが許可するものではありません。 Mavenの観点から、特定の名前を持つすべてのJARは、同じ名前を持つ他のすべてのJARとまったく同じである必要があります。

たとえば、私のプロジェクトがabc-1.0.jarに依存しているとします。この依存関係は、アルファベットチームが1.0版のAPIを指定してabcライブラリを公開したために指定しました。私のインターネットが出てローカルのリポジトリに手作業でインストールするときに、私の隣人から通りの向こうの世界のどのリポジトリからでも、このjarファイルを入手できなければなりません。まったく同じファイルでなければなりません。それが同じファイルでない場合は、jarファイル内の.classファイルに、エラーなしでビルドを成功させるために必要なライブラリコードが含まれているという保証はありません。

本当にの場合は、理論的には可能です。分類子を持つすべての依存JARの

  1. propertiesセクションのPOMのXMLを解析し、そこから個々の特性を解析だけでなく、依存関係のjarファイルの名前
  2. 」:あなたがするスクリプトを書くことができますmanifest_injected "、ローカルリポジトリで見つけようとします。存在しない場合は、特定の依存関係を持つ空のMavenプロジェクトを生成し(manifest_injectedクラシファイアなし)、mvn validateを実行して依存関係がダウンロードされ、ローカルリポジトリに格納されていることを確認します。
  3. クローンすべてのJARファイルを開き、クローンを開き、以前に解析したプロパティで必要なマニフェスト注入を行い、注入されたjarをMavenリポジトリの適切な場所に保存します。
  4. スクリプトに渡されたMavenビルドを引数。

幸運!

0

バイナリリポジトリで簡単に実行できます。たとえば、Artifactoryではa user plugin that will be triggered on any downloadと書くことができます。このリスナーでは、独自のコードを記述することができます。jarファイルを開き、マニフェストを変更して、元のファイルではなく変更したjarを提供します(次回はキャッシュします)。

関連する問題