【发布时间】:2014-03-31 18:30:05
【问题描述】:
我正在尝试自动从.thrift 文件生成源文件,然后再进行打包。据我所知,maven-thrift-plugin 在源目录和目标目录是固定的意义上是限制性的。有什么方法可以指定源目录和目标目录吗?我可能可以通过使用maven-antrun-plugin 来实现这一点,但我不想不必要地污染我的 pom。
谢谢。
【问题讨论】:
-
我敢打赌周围已经有答案了,但我没有找到。
我正在尝试自动从.thrift 文件生成源文件,然后再进行打包。据我所知,maven-thrift-plugin 在源目录和目标目录是固定的意义上是限制性的。有什么方法可以指定源目录和目标目录吗?我可能可以通过使用maven-antrun-plugin 来实现这一点,但我不想不必要地污染我的 pom。
谢谢。
【问题讨论】:
我最终也选择了maven-antrun-plugin 路线,这是一个功能示例:https://github.com/cobbzilla/cobbzilla-wizard/tree/master/wizard-thrift
maven-antrun-plugin 来执行 build.xml 中的thrift 目标生成的源返回到源树;我不喜欢派生文件污染我的上游源代码控制,所以生成的文件在thrift 包下,包目录在.gitignore 文件中。有点笨拙。
自从编写该代码后,我了解到的一个更好的方法是to compile multiple java source directories in a single maven project,这样会更简洁。
【讨论】:
据我所知,源代码 (https://github.com/dtrott/maven-thrift-plugin/blob/master/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java) 有一些配置属性可以控制这种行为。
试试这些属性,它们应该可以工作:
thriftSourceRootthriftTestSourceRootoutputDirectory这些道具应该与<thriftExecutable>等一起添加到<configuration>部分:
<plugin>
<groupId>org.apache.thrift.tools</groupId>
<artifactId>maven-thrift-plugin</artifactId>
<version>0.1.10</version>
<configuration>
<thriftExecutable>/usr/local/bin/thrift</thriftExecutable>
<thriftSourceRoot>${basedir}/src/main/my_custom_thrift_root</thriftSourceRoot>
</configuration>
<executions>
...
</plugin>
【讨论】:
gen-java 是不可能的(至少我在命令行中也做不到)。说到强制清理:可能会从单个节俭源生成多个 java 文件。因此,在 thrift 源中每次重命名 struct/service 后都会出现垃圾生成的文件。最好在不同的目录下生成其他文件。
maven-antrun-plugin。谢谢!