gpt4 book ai didi

scala - 有什么方法可以从Maven构建中的Protobuf文件生成Scala代码?

转载 作者:行者123 更新时间:2023-12-04 04:38:35 26 4
gpt4 key购买 nike

我正在寻找一个包含所有这三样东西的解决方案。到目前为止,我已经能够找到可以在构建过程中从原始文件生成Java代码的Maven插件,以及可以从原始文件生成Scala代码的命令行工具,但是没有将所有东西混合在一起的工具。

到目前为止,我发现的最有前途的东西是ScalaBuff,它存在于Maven仓库中。如果我这样将其添加为依赖项...

    <dependency>
<groupId>net.sandrogrzicic</groupId>
<artifactId>scalabuff-compiler_2.10</artifactId>
<version>1.3.6</version>
</dependency>
<dependency>
<groupId>net.sandrogrzicic</groupId>
<artifactId>scalabuff-runtime_2.10</artifactId>
<version>1.3.6</version>
</dependency>

...是否有任何方法可以简单地让Maven构建在构建阶段以命令行实用程序的形式启动它? (希望生成源)我也发现了这一点,但是对于如何使它们完美地结合在一起却一无所知:Maven: http://mojo.codehaus.org/exec-maven-plugin/

注意:我真的很希望它具有可移植性,并且不依赖于本地计算机上安装的东西,但是非常欢迎黑客使用(例如,将jar或可执行文件添加到源代码管理中)

提前致谢!

更新:

除了上述依赖性之外,如果我添加以下内容...
    <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>protobuf-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>net.sandrogrzicic.scalabuff.compiler.ScalaBuff</mainClass>
<arguments>
<argument>--proto_path=src/main/protobuf</argument>
<argument>--scala_out=target/generated-sources/scalabuff</argument>
</arguments>
<sourceRoot>target/generated-sources/scalabuff</sourceRoot>
</configuration>
</plugin>

...我可以在构建期间(在generate-sources阶段)生成源,但是由于某种原因,该构建在运行exec插件后立即停止。很近!如果任何人都可以解决最后一个问题,则将解决此问题。

最佳答案

已解决:maven exec插件java目标没有 fork ,因此scalabuff编译器中的exit(0)导致整个构建退出。还必须在generate-sources之前创建一个目录,以使ScalaBuff满意。使用ScalaBuff依赖项和以下插件可以正常工作!:

<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>initialize</phase>
<configuration>
<tasks>
<mkdir dir="target/generated-sources/scalabuff" />
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>protobuf-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<executable>java</executable>
<arguments>
<argument>-classpath</argument>
<!-- automatically creates the classpath using all project dependencies,
also adding the project build directory -->
<classpath/>
<argument>net.sandrogrzicic.scalabuff.compiler.ScalaBuff</argument>
<argument>--proto_path=src/main/protobuf</argument>
<argument>--scala_out=target/generated-sources/scalabuff</argument>
</arguments>
<sourceRoot>target/generated-sources/scalabuff</sourceRoot>
</configuration>
</plugin>

关于scala - 有什么方法可以从Maven构建中的Protobuf文件生成Scala代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688289/

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