<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>io.dapr</groupId>
    <artifactId>dapr-sdk-parent</artifactId>
    <version>1.17.0</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>dapr-sdk-autogen</artifactId>
  <packaging>jar</packaging>
  <name>dapr-sdk-autogen</name>
  <description>Auto-generated SDK for Dapr</description>

  <properties>
    <java.version>17</java.version>
    <protobuf.output.directory>${project.build.directory}/generated-sources</protobuf.output.directory>
    <protobuf.input.directory>${project.build.directory}/proto</protobuf.input.directory>
    <maven.deploy.skip>false</maven.deploy.skip>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.annotation</groupId>
      <artifactId>javax.annotation-api</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty</artifactId>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-protobuf</artifactId>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-stub</artifactId>
    </dependency>
    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-testing</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.sonatype.plugins</groupId>
        <artifactId>nexus-staging-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.googlecode.maven-download-plugin</groupId>
        <artifactId>download-maven-plugin</artifactId>
        <version>${download-maven-plugin.version}</version>
        <executions>
          <execution>
            <id>getCommonProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/common/v1/common.proto</url>
              <outputFileName>common.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/common/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getActorsProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/actors.proto</url>
              <outputFileName>actors.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getAiProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/ai.proto</url>
              <outputFileName>ai.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getAppcallbackProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/appcallback.proto</url>
              <outputFileName>appcallback.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getBindingProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/binding.proto</url>
              <outputFileName>binding.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getConfigurationProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/configuration.proto</url>
              <outputFileName>configuration.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getCryptoProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/crypto.proto</url>
              <outputFileName>crypto.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getDaprProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/dapr.proto</url>
              <outputFileName>dapr.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getInvokeProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/invoke.proto</url>
              <outputFileName>invoke.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getJobsProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/jobs.proto</url>
              <outputFileName>jobs.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getLockProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/lock.proto</url>
              <outputFileName>lock.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getMetadataProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/metadata.proto</url>
              <outputFileName>metadata.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getPubsubProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/pubsub.proto</url>
              <outputFileName>pubsub.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getSecretProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/secret.proto</url>
              <outputFileName>secret.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getStateProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/state.proto</url>
              <outputFileName>state.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>getWorkflowProto</id>
            <phase>initialize</phase>
            <goals>
              <goal>wget</goal>
            </goals>
            <configuration>
              <skipCache>true</skipCache>
              <url>${dapr.proto.baseurl}/runtime/v1/workflow.proto</url>
              <outputFileName>workflow.proto</outputFileName>
              <outputDirectory>${protobuf.input.directory}/dapr/proto/runtime/v1</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>


      <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>${protobuf-maven-plugin.version}</version>
        <configuration>
          <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
          <pluginId>grpc-java</pluginId>
          <pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
          <protoSourceRoot>${protobuf.input.directory}</protoSourceRoot>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>compile-custom</goal>
            </goals>
            <configuration>
              <includes>
                <include>dapr/proto/common/v1/common.proto</include>
                <include>dapr/proto/runtime/v1/*.proto</include>
              </includes>
            </configuration>

          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${maven-sources-plugin.version}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${maven-javadoc-plugin.version}</version>
        <configuration>
          <notimestamp>true</notimestamp>
        </configuration>
        <executions>
          <execution>
            <id>attach-javadocs</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.github.spotbugs</groupId>
        <artifactId>spotbugs-maven-plugin</artifactId>
        <configuration>
          <!-- Skip findbugs for auto-generated code -->
          <skip>true</skip>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
