如何使用节俭生成器作为 Maven 依赖项(如何避免引用 .exe 文件)?

How to use thrift generator as maven dependency(how to avoid reference to .exe file)?

我在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 依赖项?怎么样?

所以,我认为你的问题的答案是,"No, there's not really a way to avoid having the path to the executable delivered to the plugin."

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

在你的 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,因此每个 developer/builder 都需要在他们的机器上安装 thrift 并为自己定义 属性。这样 Mac 或 Linux 主机就不会在尝试查找 Windows 卷等时卡住。

请参阅 Maven documentation 以了解有关配置文件的更多详细信息及其方便的原因。