【问题标题】:Maven Thrift PluginMaven Thrift 插件
【发布时间】:2014-03-31 18:30:05
【问题描述】:

我正在尝试自动从.thrift 文件生成源文件,然后再进行打包。据我所知,maven-thrift-plugin 在源目录和目标目录是固定的意义上是限制性的。有什么方法可以指定源目录和目标目录吗?我可能可以通过使用maven-antrun-plugin 来实现这一点,但我不想不必要地污染我的 pom。

谢谢。

【问题讨论】:

  • 我敢打赌周围已经有答案了,但我没有找到。

标签: maven pom.xml thrift


【解决方案1】:

我最终也选择了maven-antrun-plugin 路线,这是一个功能示例:https://github.com/cobbzilla/cobbzilla-wizard/tree/master/wizard-thrift

  • pom.xml 使用maven-antrun-plugin 来执行 build.xml 中的thrift 目标
  • build.xml 进行 thrift 编译和打包。

生成的源返回到源树;我不喜欢派生文件污染我的上游源代码控制,所以生成的文件在thrift 包下,包目录在.gitignore 文件中。有点笨拙。

自从编写该代码后,我了解到的一个更好的方法是to compile multiple java source directories in a single maven project,这样会更简洁。

【讨论】:

    【解决方案2】:

    据我所知,源代码 (https://github.com/dtrott/maven-thrift-plugin/blob/master/src/main/java/org/apache/thrift/maven/ThriftCompileMojo.java) 有一些配置属性可以控制这种行为。

    试试这些属性,它们应该可以工作:

    • thriftSourceRoot
    • thriftTestSourceRoot
    • outputDirectory

    这些道具应该与<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 目录中创建这些文件。此外,该插件将强制清理输出目录,这对我来说也是一个问题,因为我在目录中有其他帮助程序类,它们也被删除了。有什么办法可以避免强制清理?
    • 我认为摆脱gen-java 是不可能的(至少我在命令行中也做不到)。说到强制清理:可能会从单个节俭源生成多个 java 文件。因此,在 thrift 源中每次重命名 struct/service 后都会出现垃圾生成的文件。最好在不同的目录下生成其他文件。
    • 我也很害怕。我会看看我是否可以使用maven-antrun-plugin。谢谢!
    猜你喜欢
    • 2014-04-29
    • 2011-02-04
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多