我有一个包含多个子模块和子子模块的项目,它们同时包含java和本地语言代码(主要是母语)。要处理此本机代码,我使用maven-nar-plugin
。现在,我没有在本地存储库中编译本机代码所需的所有包含。无论如何都要给maven-nar-plugin
一个目录并包含其中的所有内容吗?
我在模块的pom中使用了<systemIncludePaths>
和<includePaths>
,但它仍然无法编译。
如果有更简单的方法,而不是我要去的方向,请解释。
答案 0 :(得分:0)
以下内容仍在进行中,但我认为我走在正确的轨道上。我从以下(标准)目录结构开始,其中我想要包含一个git c ++项目:
+---src
+---main
+---c++
+---java
因为我不想更改原始make项目的目录结构,所以我需要定义自定义源目录和自定义include目录。这是拉动后产生的目录结构(我省略了无关的文件结构):
+---src
+---main
+---c++
+---data
+--- ...
+---examples
+--- ...
+---scripts
+--- ...
+---src
+---hunalign
+--- ... (source files)
+---include
+--- ... (header files)
+---utils
+--- ... (helper classes)
+---tools
+--- ...
通过以下配置,我编译了项目。
<build>
<plugins>
<plugin>
<artifactId>maven-nar-plugin</artifactId>
<version>2.1-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>executable</type>
<run>true</run>
</library>
</libraries>
<!-- Here is the config for the custom source dir and includes -->
<cpp>
<sourceDirectory>
${basedir}/src/main/c++/src/hunalign
</sourceDirectory>
<includes>
<include>${basedir}/src/main/c++/src/include/*.h</include>
</includes>
</cpp>
<libraries>
<library>
<type>executable</type>
<run>true</run>
</library>
</libraries>
</configuration>
</plugin>
</plugins>
</build>
编辑:为了让javah正常运行,我不得不对其进行符号链接,因为maven一直在寻找错误的位置:
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/bin/javah /Library/Java/JavaVirtualMachines/jdk1.7.0_13.jdk/Contents/Home/jre/bin/javah