当前位置: 首页 > 面试题库 >

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

范飞翰
2023-03-14
问题内容

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


问题答案:

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

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

在您的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文档,以获取有关配置文件及其使用方便的更多详细信息。



 类似资料:
  • 问题内容: 有没有一种方法可以将类型依赖项添加到我的POM并获取其所有模块? JavaMail是一个很好的例子。Maven Central Repo的父POM名为:com.sun.mail:all:1.5.0,模块包括:mail,mailapi,mailapijar,smtp,imap,gimap,pop3和dsn。 但是,“所有”人工制品只有一个文件: 是否可以将“所有”人工制品添加为对我的PO

  • 问题内容: 我在MySQL中使用触发器存在一些问题。 假设我们有2个表: 表A 表B 和2个触发器: TriggerA:在TableA上删除并更新TableB时触发 TriggerB:在TableB上删除并在TableA中删除时触发 问题是,当我删除TableB中的某些行时,TriggerB触发并删除TableA中的某些元素,然后TriggerA触发并尝试更新TableB。 它失败,因为Trigg

  • 是否可以从pom.xml引用本地Gradle项目作为Maven项目的本地依赖项? 搜索很容易给我一个相反的结果--“如何从gradle Builds引用maven项目”,但不是我的情况。

  • 问题内容: 我有一个简单的java项目,需要外部jar。我使用netbeans进行构建,在执行Clean and Build命令后,可以在dist目录中找到以下结构: 我会说典型的。 现在,我想将带有依赖库的myApp.jar分发为一个exe。这可能吗?我正在尝试使用Launch4J。在GUI中,我创建了配置文件, cp 部分中有一些选项 但它似乎是类路径,它是我可以引用的额外jar的唯一位置。

  • 我下载了一个Maven项目,可以运行来构建目标helloworld。jar,它依赖于多个第三方运行时jar。但是,我不知道如何使用Maven将这些第三方JAR自动复制到特定目录中。查看pom。xml,我发现了以下语句。因此,基本上我希望将第三方JAR复制到。要做到这一点,我应该使用哪个maven插件/短语/目标?有人能给我看一个可运行的maven语法吗?谢谢