web-dev-qa-db-ja.com

C / C ++プロジェクトにMavenを使用する

私は、Mavenビルドをアマチュアのクラスター、不十分に書かれた率直に言って-プリミティブC/C++コード(C、C++など)を配置しています。問題は-現在流通しているものが多く、簡単に交換できないことです。それを構築するには多くの部族の知識が必要であり(さまざまなパーツをコンパイル/構築する方法を見つけるためにキューブからキューブに移動する必要があります)、リリースは完全に悪夢です。 (いいえ-私はそれを書き換えません、plzは尋ねません)私の質問は-maven-native-pluginを使用して多数の短いメイクファイルを置き換えるか、exec-maven-pluginを使用してこれらを単純に実行する必要がありますか?私は かなり良い経験 を持っています。後者は.NETをやっており、nativeプラグインに投資すべきか、execに留まるべきかわかりませんか? 「Mavenizing」C/C++の経験があれば、アドバイスをもらいたいと思います。

82
Bostone

maven-nar-plugin を強くお勧めします。多くの点で他の方法より優れていると思います。ソースファイルをリストする必要はなく、複数のOSとアーキテクチャを処理し、ユニットテストと統合テストを処理し、通常は「Mavenの方法」に従います。新しい種類のパッケージング-NAR、または「ネイティブアーカイブ」を導入します。NARまたは「ネイティブアーカイブ」には、対象のアーティファクト(.dll、.so、.a、.exeなど)だけでなく、メタデータ、ヘッダーなども含まれます。理にかなっている方法。

サードパーティのソフトウェアをNARにパッケージ化するには、少し前もって作業する必要がありますが、非常に簡単です。それらがNARになったら、通常のMaven依存性メカニズムを使用してそれらとリンクします。次に例を示します。

<dependency>
  <groupId>cppunit</groupId>
  <artifactId>cppunit</artifactId>
  <scope>test</scope>
</dependency>

1つの欠点は、アクティブに維持されていないように見えることですが、フル機能であり、Mavenプラグインオーサリングのかなり印象的な例です。

89
SingleShot