Неразрешенный внешний символ C ++ на этапе тестирования плагина maven nar

У меня есть проект C ++ Maven NAR с различными зависимостями, мой pom.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>my.image</groupId>
<artifactId>image</artifactId>
<packaging>nar</packaging>
<version>1.0</version>

<name>Maven NAR Executable Project</name>

<dependencies>

<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv-core</artifactId>
<version>2.4.10</version>
<type>nar</type>
</dependency>

<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv-highgui</artifactId>
<version>2.4.10</version>
<type>nar</type>
</dependency>

<dependency>
<groupId>my.commons</groupId>
<artifactId>commons</artifactId>
<version>1.0</version>
<type>nar</type>
</dependency>

</dependencies>

<build>
<defaultGoal>integration-test</defaultGoal>
<plugins>
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.2.3</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>static</type>
</library>
</libraries>
<tests>
<test>
<name>NativeLibTest</name>
<link>static</link>
</test>
</tests>
</configuration>
</plugin>
</plugins>
</build>
</project>

Когда я бегу mvn compile проект успешно компилируется.

Проблема возникает, когда я использую mvn test -X:

[INFO] --- nar-maven-plugin:3.2.3:nar-testCompile (default-nar-testCompile) @ image ---
...
[DEBUG] Examining artifact for NarInfo: org.opencv:opencv-core:nar:2.4.10:compile
[DEBUG]     - added as NarDependency
[DEBUG] Examining artifact for NarInfo: org.opencv:opencv-highgui:nar:2.4.10:compile
[DEBUG]     - added as NarDependency
[DEBUG] Examining artifact for NarInfo: my.commons:commons:nar:1.0:compile
[DEBUG]     - added as NarDependency
...
[DEBUG] Execute:Java13CommandLauncher: Executing 'link' with arguments:
'/MANIFEST'
'/NOLOGO'
'/SUBSYSTEM:CONSOLE'
'/INCREMENTAL:NO'
'/OUT:NativeLibTest.exe'
'E:\PROY\image-lib\dev\1.0\image\target\nar\image-1.0-x86-Windows-msvc-static\lib\x86-Windows-msvc\static\image-1.0.lib'
'E:\PROY\image-lib\dev\1.0\image\target\test-nar\opencv-core-2.4.10-x86-Windows-msvc-shared\lib\x86-Windows-msvc\shared\opencv-core-2.4.10.lib'
'E:\PROY\image-lib\dev\1.0\image\target\test-nar\opencv-highgui-2.4.10-x86-Windows-msvc-shared\lib\x86-Windows-msvc\shared\opencv-highgui-2.4.10.lib'
'E:\PROY\image-lib\dev\1.0\image\target\test-nar\obj\x86-Windows-msvc\image-test.obj'

Из сообщений мне кажется, что плагин Maven NAR игнорирует некоторые библиотеки (my.commons), это странно, потому что my.commons добавляется как NarDependency (как вы можете видеть в первых строках), даже target\test-nar\commons-1.0-x86-Windows-msvc-static\lib\x86-Windows-msvc\static копируется и имеет commons-1.0.lib, Наконец, библиотека не передана link вызывая много нерешенных внешних символов.

TLDR: Maven NAR успешно компилируется при использовании mvn compile но не удается при использовании mvn test,

Обновить

Я думаю, что мои другие зависимости вводятся, потому что они являются «Библиотечными каталогами». Каталог библиотеки — это проект, который содержит библиотеку (в моем случае — .lib) в дереве каталогов. src\nar\resources\aol\x86-Windows-msvc\lib и соответствующие заголовки в src\nar\resources\noarch, Термин «каталог библиотеки» можно найти в коде плагина (см. NarTestCompileMoo.java:284). Есть несколько комментариев о том, почему библиотеки должны быть связаны на этапе тестирования:

  **NarTestCompileMoo.java:273**
// Static libraries should be linked. Even though the libraries
// themselves will have been tested already, the test code could
// use methods or classes defined in them.

Итак, почему моя статическая библиотека не распознается?

Обновить

Я понимаю, что я использую версию 3.2.3, когда есть версия 3.3.0 http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.github.maven-nar%22%20AND%20a%3A%22nar-maven-plugin%22. Так что буду обновлять и тестировать.

0

Решение

Эта проблема в некоторой степени связана с:

Таким образом, решение применимо и здесь. В двух словах:

  1. Вам необходимо использовать последнюю версию плагина Maven NAR.
  2. Как утверждает GregDomjan на github, вам необходимо соответствующим образом настроить ваши инструменты, в моем случае (msvc11.0 / winsdk8.0):

pom.xml

<build>
<plugins>
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.3.0</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>executable</type>
<run>true</run>
</library>
</libraries>
<msvc>
<version>11.0</version>
<windowsSdkVersion>8.0</windowsSdkVersion>
</msvc>
</configuration>
</plugin>
</plugins>
</build>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]