编译ltp4j¶
如果您需要使用ltp4j,必须拥有两部分内容
- ltp4j.jar与C++代理程序
- LTP模型文件
其中,LTP模型文件可以从 百度云,当前ltp4j对应的模型版本为3.3.1。本文档将着重介绍如何编译ltp4j.jar与其C++代理程序。
安装Maven¶
ltp4j使用 apache maven 进行构建。在构建ltp4j之前,您首先需要安装maven。安装方法请参考: 安装apache maven。
编译ltp4j¶
在确保安装maven的前提下(即 mvn -h 具有输出结果),您可以按照如下方式构建ltp4j。
- 在命令行下进入ltp4j所在文件夹
- git submodule init
- git submodule update
- mvn -Dmaven.test.skip=true
如果您编译提示成功同时项目根目录下包含 target/ltp4j-{version}.jar,证明已经编译成功。
nar-maven-plugin¶
本部分将介绍编译ltp4j的一些技术考虑,与编译ltp4j无关。对这部分不感兴趣的用户可以忽略这部分文档。
ltp4j的基本技术考虑是 使用户使用最简单的技术手段编译使用ltp4j 。所以我们选择了maven作为构建工具,希望可以通过一条指令完成编译过程。 如前文所述,ltp4j需要ltp4j.jar及其C++代理程序两部分。 为了在maven中既能够使用java编译器编译jar又能够使用C++编译器编译C++代理程序,我们经过调研,决定使用 nar-maven-plugin 。这一maven插件使我们可以在不同的系统架构下编译C++的代码 (AOL)。 在使用过程中,我们发现了这一插件的一系列bug,并通过贡献代码的方式进行了解决。
编译结果¶
nar-maven-plugin的编译结果随操作系统的不同而存在差异。其生成的ltp4j.jar以及代理文件可以从如下路径找到
- jar:./target/ltp4j-{version}.jar
- 代理程序:./target/ltp4j-{version}-{AOL}-jni/
其中,vesion 代表ltp4j的版本。AOL 代表 体系结构-系统-链接器 。 举例来讲,
- Windows 64位系统使用MSVC编译对应的AOL为:amd64-Windows-msvc
- Ubuntu 64位系统使用gnuc++编译对应的AOL为:amd64-Linux-gpp
编译结果示例¶
64位Linux g++
$ find target/ -type f -name "*.jar" -or -name "*.so"
target/ltp4j-0.1.0-SNAPSHOT.jar
target/nar/ltp4j-0.1.0-SNAPSHOT-amd64-Linux-gpp-jni/lib/amd64-Linux-gpp/jni/libltp4j-0.1.0-SNAPSHOT.so
64位windows MSVC
$ find target/ -type f -name "*.jar" -or -name "*.dll"
target/ltp4j-0.1.0-SNAPSHOT.jar
target/nar/ltp4j-0.1.0-SNAPSHOT-amd64-Windows-msvc-jni/lib/amd64-Windows-msvc/jni/ltp4j-0.1.0-SNAPSHOT.dll