POM
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <groupId>com.semonx</groupId>    <artifactId>grpc-demo</artifactId>    <version>1.0-SNAPSHOT</version>    <properties>        <!-- 指定版本为1.8 -->        <maven.compiler.source>1.8</maven.compiler.source>        <maven.compiler.target>1.8</maven.compiler.target>        <!--项目编码改为UTF-8 -->        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    </properties>    <dependencies>        <dependency>            <groupId>io.grpc</groupId>            <artifactId>grpc-netty-shaded</artifactId>            <version>1.31.0</version>        </dependency>        <dependency>            <groupId>io.grpc</groupId>            <artifactId>grpc-protobuf</artifactId>            <version>1.31.0</version>        </dependency>        <dependency>            <groupId>io.grpc</groupId>            <artifactId>grpc-stub</artifactId>            <version>1.31.0</version>        </dependency><!--        <dependency> <!– necessary for Java 9+ –>--><!--            <groupId>org.apache.tomcat</groupId>--><!--            <artifactId>annotations-api</artifactId>--><!--            <version>6.0.53</version>--><!--            <scope>provided</scope>--><!--        </dependency>-->    </dependencies>    <build>        <extensions>            <extension>                <groupId>kr.motd.maven</groupId>                <artifactId>os-maven-plugin</artifactId>                <version>1.6.2</version>            </extension>        </extensions>        <plugins>            <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-compiler-plugin</artifactId>                <version>3.8.1</version>            </plugin>            <plugin>                <groupId>org.xolstice.maven.plugins</groupId>                <artifactId>protobuf-maven-plugin</artifactId>                <version>0.6.1</version>                <extensions>true</extensions>                <configuration>                    <!-- 基础配置 -->                    <protocArtifact>com.google.protobuf:protoc:3.12.0:exe:${os.detected.classifier}</protocArtifact>                    <pluginId>grpc-java</pluginId>                    <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.31.0:exe:${os.detected.classifier}</pluginArtifact>                    <!-- 配置.proto所在路径 -->                    <protoSourceRoot>${project.basedir}/proto-src</protoSourceRoot>                    <!-- 配置代码生成的根目录,如果.proto中设置了package或option java_package,会在根目录下生成层级目录 -->                    <outputDirectory>${project.build.sourceDirectory}</outputDirectory>                    <!-- 设置是否在生成java文件之前清空outputDirectory的文件,默认值为true,设置为false时也会覆盖同名文件 -->                    <!-- 最好设置成false,避免.proto文件中忘记写包导致源码目录被清掉 -->                    <clearOutputDirectory>false</clearOutputDirectory>                    <!-- 临时文件生成路径 -->                    <temporaryProtoFileDirectory>${project.build.directory}/protoc-temp</temporaryProtoFileDirectory>                </configuration>                <executions>                    <execution>                        <goals>                            <goal>compile</goal>                            <goal>compile-custom</goal>                        </goals>                    </execution>                </executions>            </plugin>        </plugins>    </build></project>