Maven と NAR プラグインを使用して DLL をビルドおよびテストしようとしています。私が構築している DLL は、NAR プラグインを使用して構築した別の DLL に依存しています。これが私のPOMです:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany</groupId>
<artifactId>myproject</artifactId>
<packaging>nar</packaging>
<name>My Project</name>
<version>1.0.0-SNAPSHOT</version>
<properties>
<skipTests>true</skipTests>
</properties>
<build>
<defaultGoal>install</defaultGoal>
<plugins>
<plugin>
<groupId>org.codeswarm</groupId>
<artifactId>maven-nar-plugin</artifactId>
<version>20121119</version>
<extensions>true</extensions>
<configuration>
<cpp>
<defines>
<define>DLLEXPORT</define>
</defines>
</cpp>
<libraries>
<library>
<type>shared</type>
</library>
</libraries>
<tests>
<test>
<name>ProjectTest</name>
<link>shared</link>
</test>
</tests>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>shared-library</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>nar</type>
<scope>runtime</scope>
</dependency>
</dependencies>
</project>
依存関係を削除するcom.mycompany:shared-library
と、呼び出したいコードも削除され、正常に動作します。ProjectTest
正常に動作し、想定どおりに動作します。しかし、依存関係が存在すると、maven は を見つけることができないため、テストを実行できませんshared-library
。エラーでクラッシュします0xc0000135
。
Maven をデバッグ モードで実行すると、テストをコンパイルすると、両方の DLL のヘッダー ファイルのインクルード パスがコンパイラ コマンドに正しく追加されることがわかります。テストをリンクすると、両方の DLL のエクスポート ライブラリがリンカー コマンドに正しく追加されます。問題は、Maven がテストを実行するときに発生します。Maven は DLL へのパスをシステム パスに追加しようとしますが、これを実行しますが、パスをmyproject
DLL に追加するだけです。shared-library
DLLへのパスは追加されません。したがって、クラッシュ。
これは maven-nar-plugin の既知の問題ですか? また、NAR プラグインのいくつかのフォークが浮かんでいることを示唆していると聞いたことがあります。この問題は、私が使用しているプラグイン以外のバージョンで修正される可能性がありますか? または、推奨できる回避策はありますか?