如何将Thrift生成器用作Maven依赖项(如何避免引用.exe文件)?

时间:2018-08-27 17:09:41

标签: java maven thrift

我在pom.xml中具有以下内容:

...
<dependencies>
  ...
  <dependency>
            <groupId>org.apache.thrift</groupId>
            <artifactId>libthrift</artifactId>
            <version>0.11.0</version>
   </dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.thrift.tools</groupId>
                <artifactId>maven-thrift-plugin</artifactId>
                <version>0.1.11</version>
                <configuration>
                    <thriftExecutable>D:/work/thrift-folder/thrift-0.11.0.exe</thriftExecutable>
                    <thriftSourceRoot>../thrift-files</thriftSourceRoot>
                    <generator>java</generator>
                </configuration>
                <executions>
                    <execution>
                        <id>thrift-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

一切正常,但我不希望在源代码中引用.exe文件:

<thriftExecutable>D:/work/thrift-folder/thrift-0.11.0.exe</thriftExecutable>

是否可以改用Maven依赖项?怎么样?

1 个答案:

答案 0 :(得分:1)

所以,我认为您的问题的答案是:“不,实际上没有一种方法可以避免将可执行文件的路径传递给插件。”

我建议的最接近的是这样的:

在您的pom.xml中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.thrift.tools</groupId>
            <artifactId>maven-thrift-plugin</artifactId>
            <version>0.1.11</version>
            <configuration>
                <thriftExecutable>${myProps.thriftExec}</thriftExecutable>
                <thriftSourceRoot>../thrift-files</thriftSourceRoot>
                <generator>java</generator>
            </configuration>
            <executions>
                <execution>
                    <id>thrift-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

然后,在构建用户的~/.m2/settings.xml中:

<profiles>
  <profile>
    <id>thrift-build</id>
      <properties>
          <myProps.thriftExec>D:/work/thrift-folder/thrift-0.11.0.exe</myProps.thriftExec>
      </properties>
  </profile>
</profiles>

现在,您可以检入pom.xml,并且其中没有任何特定于计算机的路径。为了执行构建,需要定义属性myProps.thriftExec,因此每个开发人员/构建者都需要在自己的计算机上安装thrift并为其定义该属性。这样一来,Mac或Linux主机就不会因为试图找到Windows卷等而卡住。

有关个人资料及其使用方便的更多信息,请参见Maven documentation