2017-02-01 1 views
1

目的:他のpomのmvnコンパイル時に実行可能なmaven shadeプラグインで実行可能なuber jarを作成します。mvn process-resourcesはシェードプラグインで作成されたuber jarをプルダウンしません

再現手順:

  1. がポンポンの下に使用して、 "出版社" のコンポーネントのためのpom.xmlを作成します。
  2. MVN消費者に

をコンパイル

  • (POM下) "消費者" のためのpom.xmlする依存関係を追加します
  • (MVNインストールと同様に動作します)、それを展開MVNに構築ジェンキンスを使用します期待される動作: ユーバージャーは、nを行います。出版社のための ユーバージャーが

    実際の消費/対象ディレクトリのどこかにダウンロードされますOTは、消費者のディレクトリに表示され

    コンポーネント1:出版社

    <?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    
    <groupId>com.mec.experiment</groupId> 
    <artifactId>publisher</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <dependencies> 
        <dependency> 
         <groupId>org.hibernate</groupId> 
         <artifactId>hibernate-core</artifactId> 
         <version>5.2.6.Final</version> 
        </dependency> 
    </dependencies> 
    <build> 
        <plugins> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-jar-plugin</artifactId> 
          <configuration> 
           <archive> 
            <manifestFile>src/main/resources/META-INF/MANIFEST.mf</manifestFile> 
           </archive> 
          </configuration> 
         </plugin> 
         <plugin> 
          <groupId>org.apache.maven.plugins</groupId> 
          <artifactId>maven-shade-plugin</artifactId> 
          <version>2.3</version> 
          <executions> 
           <execution> 
            <phase>package</phase> 
            <goals> 
             <goal>shade</goal> 
            </goals> 
           </execution> 
          </executions> 
         </plugin> 
        </plugins> 
    </build> 
    

    コンポーネント2:消費者

    <?xml version="1.0" encoding="UTF-8"?> 
    <project xmlns="http://maven.apache.org/POM/4.0.0" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    
    <groupId>com.mec.experiment</groupId> 
    <artifactId>consumer</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 
        <dependency> 
         <groupId>com.mec.experiment</groupId> 
         <artifactId>publisher</artifactId> 
         <version>1.0-SNAPSHOT</version> 
        </dependency> 
    </dependencies> 
    

  • +0

    パブリッシャーに分類子が指定されていますか?あなたは、消費者の依存関係に '出版社'を使用しています。 – Tunaki

    +0

    ああ、以前の実験の痕跡。 パブリッシャ : 消費者 <構成> 出版社 :私はPOMS上記とを有する パブリッシャの両方と試みどちらの場合も同じ動作です。 コンシューマpomが内部整合性のために分類子を削除するように更新されました。 – mcating

    +0

    ここで "ターゲットディレクトリ"とはどういう意味ですか?なぜパブリッシャーを "どこかの消費者/ターゲットディレクトリ"にダウンロードする必要があるのか​​分かりません。 – Tunaki

    答えて

    1

    answer from the possible duplicateコメントにリンクすると、デッド・サンプル・ページへのリンクがあります。ここにはsupplementがあります。プラグインの設定は、コンシューマーpomの内部に属します。

    のexec:javaの

    フルネーム:

    org.codehaus.mojoます。exec-mavenの-プラグイン:1.5.0:javaの

    説明: がで供給されるJavaクラスを実行します現在のVMはクラスパスとしてそのプロジェクトの依存関係を囲みます。

    アトリビュート:

    Mavenプロジェクトを実行する必要があります。 スコープ内の成果物の依存関係の解決が必要です:テスト。 目的はスレッドセーフであり、並列ビルドをサポートします。 バージョン:1.0以降。

    特にご使用の場合はexecutableDependencyを参照してください。パスをハードコーディングするのではなく、グループIDと成果物に従ってproducerを参照できるようになります。

    関連する問題