maven protobuf 編譯插件使用 (1)


背景

使用maven的protobuf插件可以在maven compile階段編譯.proto文件,生成.java文件。
這種編譯方式比手動執行protoc命令,后面跟一堆易忘的參數(每次編譯都得google或找之前記的筆記),要高效省心得多。

使用

網上搜索了一番,發現這個插件相對使用量多一些。

<plugin>
    <groupId>org.xolstice.maven.plugins</groupId>
    <artifactId>protobuf-maven-plugin</artifactId>
    <version>0.5.1</version>
</plugin>

在項目的pom.xml中加上如下配置后

<plugin>
    <groupId>org.xolstice.maven.plugins</groupId>
    <artifactId>protobuf-maven-plugin</artifactId>
    <version>0.5.1</version>
    <configuration>
        <!--本地protoc編譯命令位置-->
        <protocExecutable>/usr/local/bin/protoc3</protocExecutable>
        <!--proto文件所在目錄-->
        <protoSourceRoot>src/main/resources</protoSourceRoot>
        <!--產出java文件的目標目錄-->
        <outputDirectory>src/main/java</outputDirectory>
        <!--是否清空上面配置目錄outputDirectory-->
        <clearOutputDirectory>false</clearOutputDirectory>
    </configuration>
</plugin>

在resouce目錄中定義好proto文件,執行ll -r后proto所在文件目錄如下:

./src/main/resources:
total 24
-rw-r--r--  1 sakura1  staff  384 Dec  6 20:44 log4j.properties
-rw-r--r--  1 sakura1  staff  181 Apr 18 17:20 student.proto
-rw-r--r--  1 sakura1  staff  179 Apr 18 17:19 teacher.proto

定義的proto文件如下:

syntax = "proto3";

option java_package = "me.fengfshao.pb";
option java_outer_classname = "StudentProto";

message Student{
  string name=1;
  string address=2;
  uint32 age=3;
}
syntax = "proto3";

option java_package = "me.fengfshao.pb";
option java_outer_classname = "TeacherProto";
****
message Teacher{
  string name=1;
  string address=2;
  uint32 age=3;
}

在項目中根目錄 執行mvn protobuf:compile(或是利用idea的mvn插件,Lifecycle下面的Plugins,找到protobuf),執行完成后,可以發現.java文件出現在了對應的包中。

如果需要在代碼編譯時重新編譯,可以將插件執行綁定在maven的生命周期中,在插件配置中加入如下內容:

  <executions>
      <execution>
          <phase>process-sources</phase>
          <goals>
              <goal>compile</goal>
          </goals>
      </execution>
  </executions>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM