gpt4 book ai didi

maven - 如何将所有 .thrift 文件 (*.thrift) 编译为 Maven 阶段?

转载 作者:行者123 更新时间:2023-12-04 09:31:27 24 4
gpt4 key购买 nike

我正在使用 maven-antrun-plugin 来执行一个 thrift shell 命令。我可以为每个 <exec> 编译一个文件与 <arg value="...path/to/file.thrift" /> ,但我想编译所有 .thrift目录中的文件。我怎样才能做到这一点?

我尝试使用 <arg value="...path/to/*.thrift" /> ,但 Maven 拒绝了这种语法。

最佳答案

在 maven 项目中编译 thrift 文件有几个选项:

选项 1:使用 maven thrift 插件(最好的一个)

Maven Thrift 插件支持生成源/测试源、修改时重新编译等。基本上,这是在 Maven 项目中使用 thrift 最方便的方式。

  • 把你的来源放在 src/main/thrift (或 src/test/thrift 用于测试节俭来源)。
  • 将 thrift 二进制文件安装到/usr/local/bin/thrift(或任何其他你喜欢的地方)
  • 将插件添加到 plugins你的 pom.xml 的部分:
        <plugin>
    <groupId>org.apache.thrift.tools</groupId>
    <artifactId>maven-thrift-plugin</artifactId>
    <version>0.1.11</version>
    <configuration>
    <thriftExecutable>/usr/local/bin/thrift</thriftExecutable>
    </configuration>
    <executions>
    <execution>
    <id>thrift-sources</id>
    <phase>generate-sources</phase>
    <goals>
    <goal>compile</goal>
    </goals>
    </execution>
    <execution>
    <id>thrift-test-sources</id>
    <phase>generate-test-sources</phase>
    <goals>
    <goal>testCompile</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

  • 就是这样:下次您调用 mvn compile java 源代码将从 thrift 生成。生成的源将被放入 target/generated-sources/thrift/目录,这个目录会被添加到java编译器的编译路径中。

    您可以在 Github 上找到详细说明、示例等: https://github.com/dtrott/maven-thrift-plugin .

    选项 2:使用 Maven Antrun 插件

    如果由于某种原因需要使用antrun插件,最好使用 apply命令而不是 exec处理一组文件。

    我将只写 ant target 的基本概念,因为修改时的条件重新编译可能超出了这个问题的范围:
    <target name="compile-thrift">
    <!-- Define fileset of thrift files -->
    <fileset id="thrift.src.files" dir="${src.thrift.dir}">
    <include name="**/*.thrift"/>
    </fileset>

    <!-- Invoke thrift binary for each of these files -->
    <apply executable="${thrift.compiler}" resultproperty="thrift.compile.result"
    failifexecutionfails="true" failonerror="true"
    searchpath="true" dir="${src.thrift.dir}">
    <arg value="-o"/>
    <arg value="${thrift.dest.dir}"/>
    <arg value="--gen"/>
    <arg value="java"/>
    <srcfile/>
    <fileset refid="thrift.src.files"/>
    </apply>
    </target>

    选项 3:将 antrun 与 exec ant 任务一起使用

    如果出于某种原因绝对需要使用 Antrun 插件和 exec任务,有办法做到这一点。我建议不要这样做,因为它丑陋且不便携,但它可能有用。使用 xargs为文件列表调用 Thrift 编译器:
    <exec dir="${src.thrift.dir}" executable="bash">
    <arg line="ls * | xargs ${thrift.compiler} -o ${thrift.dest.dir} --gen java"/>
    </exec>

    关于maven - 如何将所有 .thrift 文件 (*.thrift) 编译为 Maven 阶段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767986/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com