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

时间:2012-12-17 19:23:15

标签: c++ maven dll dependencies maven-nar-plugin

我正在尝试使用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的头文件的包含路径添加到编译器命令中。当它链接测试时,它会正确地将两个DLL的导出库添加到链接器命令。当Maven执行测试时出现问题:Maven想要将DLL的路径添加到系统路径,并且它会这样做 - 但它只会添加myproject DLL的路径。它不会添加shared-library DLL的路径。因此崩溃。

这是maven-nar-plugin中的已知问题吗?我也听说过它表明有一些NAR插件的叉子漂浮在周围;可能这个问题在某个版本的插件中修复,而不是我正在使用的那个?或者是否有可以推荐的解决方法?

1 个答案:

答案 0 :(得分:0)

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