6

maven-assembly-pluginを使用する複数のMavenプロジェクトでは、2つのバイナリファイルをフォルダーにコピーする必要があります。

これらは、私のすべてのプロジェクトに共通する2つの元のファイルです。

procrun.exe

procrunw.exe

このファイルのセットを再利用したいのですが。それらは、JARやZIPファイルなどの依存関係から取得され、後でビルドプロセスの一部として解凍される可能性があります。そうすれば、後でバイナリをアップグレードすることを選択した場合、共通プロジェクトの新しいバージョンを作成して、依存関係を共通プロジェクトに変更することができます。これを行うもう1つの理由は、個々のプロジェクトでビルド関連ファイルの数を最小限に抑えたいためです。

ここで注意が必要なのは、依存関係を解凍するときに各ファイルの名前を変更する必要があることです。たとえば、プロジェクトAの場合、次のようにファイルをコピーする必要があります。

bin / projectA_procrun.exe

bin / projectA_procrunw.exe

部分的な解決策

私の部分的な解決策は、これら2つのファイルを各Mavenプロジェクトのsrc / main / build/binフォルダーに置くことです。

理想的ではありませんが、少なくともこのページで説明されているように、一般的なアセンブリファイルの内容を再利用することはできます。

 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>my_assembly</id>
    
    <formats>
        <format>zip</format>
    </formats>    
    
    <files>
        <file>
        <source>src/main/build/bin/procrun.exe</source>
        <outputDirectory>bin</outputDirectory>
        <destName>${myexecutable.name}.exe</destName>           
    </file>
    <file>
        <source>src/main/build/bin/procrunw.exe</source>
        <outputDirectory>bin</outputDirectory>
        <destName>${myexecutable.name}w.exe</destName>
    </file>
    </files>

    <!-- Additional details ommitted -->    
</assembly> 

失敗した試行

アセンブリのoutputFileNameMapping属性では、アーティファクトの名前を変更できますが、アセンブリ内のファイルの名前を変更することはできません。

失敗した試みの1つは、各ファイルを個別のMavenアーティファクトとして登録することでした。そうすれば、各アーティファクトに対応するセクション内でoutputFileNameMappingを使用できます。

私が遭遇した問題は、Nexusが「exe」をアーティファクトとして持つことを好まないということです。

質問

パーシャルを強化するか、別のアプローチを採用することによって、期待される結果をどのように達成できるかについてのアイデアはありますか?

4

2 に答える 2

3

おそらく、アセンブリプラグインに解凍して名前を変更するように指示することはできません。ただし、アセンブリプラグインの実行後に、antrunプラグインを使用してファイルの名前を変更することはできます。

あなたのpomはこの後きれいに見えません。

しかし、繰り返しになりますが、あなたはすでにカスタムアセンブリを扱っているので、おそらくそれを受け入れても構わないと思っていると思います:-)

于 2012-08-01T06:06:04.757 に答える
1

outputFileNameMappingを使用しても、発見したJARのコンテンツには特に適用されません。厄介な詳細については、この問題を確認できます:MASSEMBLY-312

このもう1つのかなり古い問題:MASSEMBLY-45は、Antスタイルのファイル名マッピングを可能にする拡張機能を提案しました。これにより、必要な機能が提供される可能性があります。部分的に実装されましたが、単体テストの問題のために終了しませんでした。

結局、khmarbaiseのアドバイスを受けて、依存関係プラグインを使用して必要なファイルを解凍し、アセンブリを使用して再パックしました。

于 2013-08-18T19:55:35.050 に答える