gpt4 book ai didi

java - 在 Maven exec 插件参数中使用通配符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:30:04 25 4
gpt4 key购买 nike

我正在做的项目需要使用 Google Protobuf 进行序列化,因此在构建我的代码之前必须生成一些 stub 。

我使用的命令行参数是:

protoc -I=src/proto --java_out=src/main/java src/proto/*.proto

这在控制台中运行良好。

我现在想使用 Maven exec 插件,以便这个手动过程成为 Maven 构建的一部分。我使用的 pom 部分是:

    <build>
<plugins>
<plugin>
<artifactId>exec-maven-plugin</artifactId>
<groupId>org.codehaus.mojo</groupId>
<version>1.3.2</version>
<executions>
<execution>
<id>Google Protobuf Stub Generation</id>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>protoc</executable>
<commandlineArgs>-I=src/proto --java_out=src/main/java src/proto/*.proto</commandlineArgs>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

报错提示没有文件名为:src/proto/*.proto

但是,如果我删除通配符并指定一个特定文件,它就可以正常工作,例如

<commandlineArgs>-I=src/proto --java_out=src/main/java src/proto/model.proto</commandlineArgs>

我认为是通配符 * 导致了问题,因为 Maven 可能有不同的处理方式。

我的问题是如何在 Maven 中指定“该文件夹中所有扩展名为 .proto 的文件”?

最佳答案

如果你有 bash,你可以欺骗并使用“bash”作为你的可执行文件,“-c”作为第一个参数,你的完整命令作为第二个参数。

本质上,第二个参数将在 shell 中运行,因此通配符 (*) 字符有效,您通常可以获得与直接使用命令行相同的功能。

关于java - 在 Maven exec 插件参数中使用通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28135517/

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