thrift-从入门到放弃
Thrift-Java-Maven使用指北
1、下载安装Thrift,配置Thrift环境变量
2、Maven中引入libthrift依赖
1
2
3
4
5<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.14.1</version>
</dependency>3、引入Maven插件maven-thrift-plugin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19<build>
<plugins>
<plugin>
<groupId>org.apache.thrift.tools</groupId>
<artifactId>maven-thrift-plugin</artifactId>
<version>0.1.11</version>
<configuration>
<!--指定Thrift编译文件的目录和位置,设定环境变量便可不用指定-->
<thriftExecutable>./thrift/thrift.exe</thriftExecutable>
<!--指定待编译的 IDL文件目录,默认为src/main/thrift-->
<thriftSourceRoot>src/main/resources/thrift</thriftSourceRoot>
<!--在0.1.10版本后的plugin需要添加的参数-->
<generator>java</generator>
<!--指定编译输出目录-->
<outputDirectory>src/main/java</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>然后通过执行plugin 的compile指令即可将文件直接编译转化为java类,注意有些版本需要添加
java ,否则可能会报错:[ERROR] thrift failed error: [FAILURE:generation:1] Error: unknown option java:hashcode。同时,如果我们像上面一样指定了编译输出目录为项目目录,会覆盖原有目录下的文件,所以可以保持默认配置,输出至target目录下,然后复制到我们想要的package下。
FQA
执行mvn clean install编译失败
[ERROR] thrift failed error: [FAILURE:generation:1] Error: unknown option java:hashcode
[ERROR] Failed to execute goal org.apache.thrift.tools:maven-thrift-plugin:0.1.11:compile (thrift-sources) on project HelloService: thrift did n
ot exit cleanly. Review output for more information. -> [Help 1]Maven插件maven-thrift-plugin配置中添加
<generator>java</generator>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<plugin>
<groupId>org.apache.thrift.tools</groupId>
<artifactId>maven-thrift-plugin</artifactId>
<version>0.1.11</version>
<configuration>
<!--指定Thrift编译文件的目录和位置,设定环境变量便可不用指定-->
<thriftExecutable>./thrift/thrift.exe</thriftExecutable>
<!--指定待编译的 IDL文件目录,默认为src/main/thrift-->
<thriftSourceRoot>src/main/resources/thrift</thriftSourceRoot>
<!--在0.1.10版本后的plugin需要添加的参数-->
<generator>java</generator>
<!--指定编译输出目录-->
<outputDirectory>src/main/java</outputDirectory>
</configuration>
</plugin>Thrift生成的java文件,无法被import引用,原因是Thrift生成的java文件路径不对
1、
配置为 src/main/java 2、将生成的目录在IDEA中指定为源文件目录: