2011-07-01 9 views
0

を試してみません何:は解凍-依存関係を瓶前に実行してもらうことはできません:瓶、関係なく、私がどんなに私がしようとどのように

私はMavenの-のjar-pluginの前に実行するのmaven-依存関係のプラグイン/アンパック-依存関係を取得することはできません/ jarコマンドラインからmvn clean installを実行しているとき。

いつも私はそれを見ています:アンパックの実行前にjar:私は私のグーグルのライフサイクルにプリパッケージ段階を追加するという話をしていました。

基本的に、すべての必要なクラス(すべて2600個)を含む単一のjarファイルを作成します。 ...私が今までそれが仕事を得る場合

java -jar blah.jar 

そして、ここでXMLスニペットです...

 <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.2</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
       </execution> 
      </executions> 
      </plugin> 
    <plugin> 
     <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>archivedb.Read</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
      </plugin> 
:このJARにはの方法で実行することを可能にするマニフェストを取得します

私はここで赤ちゃんのように抑えられないほど泣いてしまう危険に近いです。しかし、ちょっとね!それはMavenです!

回答:

私は8時間の自分の質問に答えることができないので、ここでの解決策だ。..

Mavenのは、最後の8ヶ月で上に移動しているようだ、それは今に思えますプラグインを持っている、その明白な目的は、 '脂肪'ジャーを作ることです。マニュアルは、次のURLにあります。

http://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html

私は今、次のように自分の設定を変更した、それは非常にうまく機能し、あなたに感謝:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     <configuration> 
      <transformers> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
       <mainClass>archivedb.Read</mainClass> 
      </transformer> 
      </transformers> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

すべての返信をお寄せいただきありがとうございますが、私は自分のポストに答えました。フォローアップの返信は問題を混乱させるだけです。ご注意いただきありがとうございます。 –

答えて

0

あなたが識別することによって、それを実行することができます私は、これはあなたが要件を達成するために役立つことを願ってい

"mvn clean dependency:unpack jar:jar install" 

としてゴール順次

よろしく、

Charlee Ch。

+0

ありがとう、私はワンショットの解決策だった何かを得ることを試みていた、私は私の質問を編集した(私の質問を編集した、私自身の質問に答えることはできません)上記の私の答えを投稿しました –

+0

私はまだ、その実行物は正しい順序で実行されませんでした。 –

+0

@Bryan Hunt、前にproguardプラグインで同様の問題に直面しました。私は "準備パッケージ"のフェーズ設定を使用して達成します。 http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.htmlより詳しい情報が表示される場合があります。準備パッケージは、実際のパッケージ化の前にパッケージを準備するために必要な操作を実行します。これにより、パッケージのパッケージが解凍され、処理されることがよくあります。 (Maven 2.1以上) –

1

私は、単一のjar作成で同様の問題がありました。 私のソリューションは中のすべての依存関係がプロセスをコンパイルし、カスタムOUTPUTDIRECTORYに移動アンパック(unpackを目的とした標準のMaven依存プラグインが組み込まれています。 秘密である、JARプラグインは、全てターゲット/クラスディレクトリとパックから取り。。

<build> 
<plugins> 
    <plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <configuration> 
     <finalName>${project.artifactId}</finalName> 
     <archive> 
     <manifest> 
      <mainClass>pl.company.client.Uploader</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <version>2.3.1</version> 
    </plugin> 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>1.4</source> 
     <target>1.4</target> 
    </configuration> 
    <version>2.3.2</version> 
    </plugin> 

    <plugin> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>unpack-dependencies</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>unpack-dependencies</goal> 
     </goals> 
     <configuration> 
      <outputDirectory>${project.build.directory}/classes</outputDirectory> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

<resources> 
    <resource> 
    <directory>src/main/resources</directory> 
    </resource> 
</resources> 

:1つのJAR

私はカスタムOUTPUTDIRECTORYを定義した理由です以下のコードを見てください

+0

こんにちはMariusz、私はこの問題を少し前に解決しましたが、私自身の質問に答えることはできませんでした。私の投稿の第2部をお読みください。最近、非常に信頼性の高いソリューションがあります。 –

5

元の質問では、フェーズを次のフェーズに置き換えます。

<phase>prepare-package</phase>

これは、jarが最初に抽出されることになります。あなたの問題については、陰影解決法は優れていますが、陰影が助けにならない同様の問題を持つ他の人のための参考資料としてここに掲載します。

出力パスは、jar:jarゴールパッケージ(target/classes)と同じディレクトリにjarの内容が終わるように設定されています。

全プラグインの実行XMLスニペット:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.4</version> 
      <executions> 
       <execution> 
        <id>unpack-dependencies</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>unpack-dependencies</goal> 
        </goals> 
        <configuration> 
         <includes>**/*.class</includes> 
         <excludes>**/*.properties</excludes> 
         <outputDirectory>${project.build.outputDirectory}</outputDirectory> 

        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
関連する問題