Maven NAR插件:在路径上找不到DLL依赖项



我正在尝试使用Maven和NAR插件构建和测试一个DLL。我正在构建的DLL依赖于另一个DLL,我也是使用NAR插件构建的。这是我的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的头文件的include路径添加到编译器命令中。当它链接测试时,它会将两个DLL的导出库正确地添加到链接器命令中。当Maven执行测试时,问题就出现了:Maven想将DLL的路径添加到系统路径中,它这样做了,但它只添加了myprojectDLL的路径。它不会将路径添加到shared-libraryDLL。因此发生了坠机事件。

这是maven-nar插件中已知的问题吗?我还听说有人建议NAR插件的一些分支四处浮动;这个问题可能在我使用的插件之外的其他版本中得到修复吗?或者有什么可以推荐的变通方法吗?

发现这是一个已知问题:https://issues.sonatype.org/browse/NAR-189

最新更新