<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
    <groupId>jaxrs.example</groupId>
    <artifactId>jaxrs.example.grpc</artifactId>
    <version>0.0.21</version>
    <packaging>war</packaging>
    
    <name>jaxrs.example</name>

    <description>GRPC to JAX-RS</description>
    <url>https://jaxrs.to.grpc</url>
   
    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>https://repository.jboss.org/licenses/apache-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/resteasy/jaxrs.example.grpc</url>
    </scm>
    
    <developers>
        <developer>
            <id>bob</id>
            <name>Bob</name>
            <email>bob@bob.com</email>
            <url>http://bob.com</url>
            <roles>
                <role>project-owner</role>
            </roles>
            <timezone>-5</timezone>
        </developer>
    </developers>
  
   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.target>11</maven.compiler.target>
      <generate.package>jaxrs.example</generate.package>
      <generate.prefix>CC1</generate.prefix>
      <resteasy.version>6.2.2.Final-SNAPSHOT</resteasy.version>
      <servlet.name>default</servlet.name>
      <jars></jars>
      <classes></classes>
      <jaxrs.project.modulename></jaxrs.project.modulename>
      <context></context>
      <inWildFly>true</inWildFly>
      <release.type>snapshot</release.type>
   </properties>
  
  <!-- DistributionManagement -->
  <distributionManagement>
    <repository>
      <id>jboss-releases-repository</id>
      <name>JBoss Releases Repository</name>
      <url>https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/</url>
    </repository>
    <snapshotRepository>
      <id>jboss-snapshots-repository</id>
      <name>JBoss Snapshots Repository</name>
      <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  
   <dependencies>
      <dependency>
         <groupId>jaxrs.example</groupId>
         <artifactId>jaxrs.example</artifactId>
         <version>0.0.21</version>
         <type>war</type>
      </dependency>
      <dependency>
          <groupId>jakarta.ws.rs</groupId>
          <artifactId>jakarta.ws.rs-api</artifactId>
          <version>3.1.0</version>
          <!--scope>provided</scope-->
      </dependency>
      <dependency>
          <groupId>jakarta.servlet</groupId>
          <artifactId>jakarta.servlet-api</artifactId>
          <version>5.0.0</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.resteasy</groupId>
         <artifactId>resteasy-core</artifactId>
         <version>${resteasy.version}</version>
         <scope>provided</scope>
      </dependency>
      <dependency>
         <groupId>org.jboss.resteasy</groupId>
         <artifactId>grpc-bridge-runtime</artifactId>
         <version>${resteasy.version}</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.resteasy</groupId>
         <artifactId>grpc-bridge</artifactId>
         <version>${resteasy.version}</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.resteasy</groupId>
         <artifactId>resteasy-servlet-initializer</artifactId>
         <version>${resteasy.version}</version>
      </dependency>
      <dependency>
         <groupId>com.google.protobuf</groupId>
         <artifactId>protobuf-java</artifactId>
         <version>3.17.3</version>
      </dependency>
      <dependency>
         <groupId>jakarta.inject</groupId>
         <artifactId>jakarta.inject-api</artifactId>
         <version>2.0.0.RC1</version>
      </dependency>
      <dependency>
         <groupId>jakarta.enterprise</groupId>
         <artifactId>jakarta.enterprise.cdi-api</artifactId>
         <version>4.0.0-RC5</version>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.12</version>
         <scope>compile</scope> <!-- for CC1_Server -->
      </dependency>
      <dependency>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>exec-maven-plugin</artifactId>
         <version>3.0.0</version>
      </dependency>
      <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>protoc-gen-grpc-java</artifactId>
         <version>1.39.0</version>
         <type>pom</type>
      </dependency>
      <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-netty-shaded</artifactId>
         <version>1.39.0</version>
      </dependency>
      <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-protobuf</artifactId>
         <version>1.39.0</version>
      </dependency>
      <dependency>
         <groupId>io.grpc</groupId>
         <artifactId>grpc-stub</artifactId>
         <version>1.39.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>
      <dependency>
	     <groupId>com.google.guava</groupId>
	     <artifactId>guava</artifactId>
	     <version>30.1-android</version>
      </dependency>
     <dependency>
         <groupId>org.jboss.weld</groupId>
         <artifactId>weld-spi</artifactId>
         <version>5.0.CR2</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.weld</groupId>
         <artifactId>weld-core-impl</artifactId>
         <version>5.0.0.CR2</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.weld.module</groupId>
         <artifactId>weld-web</artifactId>
         <version>5.0.0.CR2</version>
      </dependency>
      <dependency>
         <groupId>org.jboss.weld</groupId>
         <artifactId>weld-api</artifactId>
         <version>5.0.CR2</version>
         <exclusions>
            <exclusion>
               <groupId>javax.enterprise</groupId>
               <artifactId>cdi-api</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
      <dependency>
         <groupId>org.wildfly</groupId>
         <artifactId>wildfly-weld-jakarta</artifactId>
         <version>26.1.0.Final</version>
      </dependency>
      <dependency>
         <groupId>org.wildfly.extras.grpc</groupId>
         <artifactId>wildfly-grpc-api</artifactId>
         <version>0.0.1</version>
         <scope>provided</scope>
      </dependency>
   </dependencies>

   <build>
      <extensions>
         <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.7.0</version>
         </extension>
      </extensions>

      <plugins>
         <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
               <execution>
                  <id>unpack</id>
                  <phase>initialize</phase>
                  <goals>
                     <goal>unpack</goal>
                  </goals>
                  <configuration>
                     <artifactItems>
                        <artifactItem>
                           <groupId>jaxrs.example</groupId>
                           <artifactId>jaxrs.example</artifactId>
                           <version>0.0.21</version>
                           <classifier>sources</classifier>
                           <overWrite>true</overWrite>
                           <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
                        </artifactItem>
                     </artifactItems>
                  </configuration>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
               <execution>
                  <id>proto</id>
                  <phase>initialize</phase>
                  <goals>
                     <goal>add-source</goal>
                  </goals>
                  <configuration>
                     <sources>
                        <source>src/main/proto</source>
                     </sources>
                  </configuration>
               </execution>
               <execution>
                  <id>java-generated</id>
                  <phase>process-sources</phase>
                  <goals>
                     <goal>add-source</goal>
                  </goals>
                  <configuration>
                     <sources>
                        <source>${project.basedir}/target/generated-sources/protobuf/java/</source>
                        <source>${project.basedir}/target/generated-sources/protobuf/grpc-java/</source>
                        <source>${project.basedir}/src/test/java</source>
                     </sources>
                  </configuration>
               </execution>
               <execution>
                  <id>add-test-source</id>
                  <phase>process-sources</phase>
                  <goals>
                     <goal>add-test-source</goal>
                  </goals>
                  <configuration>
                     <sources>
                        <source>${project.basedir}/target/generated-sources/protobuf/grpc-java/</source>
                        <!--source>${project.basedir}/target/generatedSources/</source-->
                     </sources>
                  </configuration>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
               <execution>
                  <id>genproto</id>
                  <phase>generate-sources</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>org.jboss.resteasy.grpc.protobuf.JavaToProtobufGenerator</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                     <arguments>
                        <argument>${project.basedir}</argument>
                        <argument>${generate.package}</argument>
                        <argument>${generate.package}</argument>
                        <argument>CC1</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>exec.cleanupDaemonThreads</key>
                           <value>false</value>
                        </systemProperty>
                        <systemProperty>
                           <key>jars</key>
                           <value>${jars}</value>
                        </systemProperty>
                        <systemProperty>
                           <key>classes</key>
                           <value>${classes}</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
               <execution>
                  <id>genprotobuf</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>org.jboss.resteasy.grpc.protobuf.JavabufTranslatorGenerator</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                     <arguments>
                        <argument>${project.basedir}/target/generated-sources/protobuf/grpc-java</argument>
                        <argument>${generate.package}.CC1</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>exec.cleanupDaemonThreads</key>
                           <value>false</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
               <execution>
                  <id>reader-writer</id>
                  <phase>process-classes</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>org.jboss.resteasy.grpc.protobuf.ReaderWriterGenerator</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                     <arguments>
                        <argument>${project.basedir}/target/generated-sources/protobuf/grpc-java</argument>
                        <argument>${generate.package}.CC1_proto</argument>
                        <argument>CC1</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>exec.cleanupDaemonThreads</key>
                           <value>false</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
               <execution>
                  <id>genGRPC</id>
                  <phase>process-resources</phase>
                  <goals>
                     <goal>java</goal>
                  </goals>
                  <configuration>
                     <mainClass>org.jboss.resteasy.grpc.JaxrsImplBaseExtender</mainClass>
                     <cleanupDaemonThreads>false</cleanupDaemonThreads>
                     <arguments>
                        <argument>CC1</argument>
                        <argument>${servlet.name}</argument>
                        <argument>${generate.package}</argument>
                        <argument>${inWildFly}</argument>
                     </arguments>
                     <systemProperties>
                        <systemProperty>
                           <key>exec.cleanupDaemonThreads</key>
                           <value>false</value>
                        </systemProperty>
                     </systemProperties>
                  </configuration>
               </execution>
               <execution>
                  <id>buildjar</id>
                  <phase>verify</phase>
                  <goals>
                     <goal>exec</goal>
                  </goals>
                  <configuration>
                     <executable>${basedir}/src/main/resources/buildjar</executable>
                     <commandlineArgs>jaxrs.example jaxrs.example.grpc 0.0.21</commandlineArgs>
                     <cleanupDaemonThreads>true</cleanupDaemonThreads>
                  </configuration>
               </execution>
               <execution>
                  <id>deployjar</id>
                  <phase>deploy</phase>
                  <goals>
                     <goal>exec</goal>
                  </goals>
                  <configuration>
                     <executable>${basedir}/src/main/resources/deployjar</executable>
                     <commandlineArgs>jaxrs.example jaxrs.example.grpc 0.0.21 ${release.type}</commandlineArgs>
                     <cleanupDaemonThreads>true</cleanupDaemonThreads>
                  </configuration>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.xolstice.maven.plugins</groupId>
            <artifactId>protobuf-maven-plugin</artifactId>
            <version>0.6.1</version>
            <configuration>
               <protocArtifact>com.google.protobuf:protoc:3.17.2:exe:${os.detected.classifier}</protocArtifact>
               <pluginId>grpc-java</pluginId>
               <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.39.0:exe:${os.detected.classifier}</pluginArtifact>
               <clearOutputDirectory>false</clearOutputDirectory>
            </configuration>
            <executions>
               <execution>
                  <id>compile_proto</id>
                  <phase>process-sources</phase>
                  <goals>
                     <goal>compile</goal>
                     <goal>compile-custom</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.10.1</version>
            <configuration>
               <forceJavacCompilerUse>true</forceJavacCompilerUse>
            </configuration>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                   <id>attach-sources</id>
                   <phase>install</phase>
                   <goals>
                      <goal>jar-no-fork</goal>
                   </goals>
                </execution>
            </executions>
         </plugin>

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
               <execution>
                  <id>chmod</id>
                  <phase>package</phase>
                  <configuration>
                     <target name="chmod">
                        <chmod file="${project.basedir}/src/main/resources/buildjar" perm="755"/>
                        <chmod file="${project.basedir}/src/main/resources/deployjar" perm="755"/>
                     </target>
                  </configuration>
                  <goals>
                     <goal>run</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
   
   <profiles>
      <profile>
         <id>wildfly</id>
         <activation>
            <property>
               <name>inWildFly</name>
               <value>!false</value>
            </property>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <artifactId>maven-war-plugin</artifactId>
                  <version>3.2.3</version>
                  <configuration>
                     <overlays>
                        <overlay>
                           <groupId>jaxrs.example</groupId>
                           <artifactId>jaxrs.example</artifactId>>
                           <excludes>
                              <exclude>**/*</exclude>
                           </excludes>
                        </overlay>
                     </overlays>
                     <webResources>
                        <resource>
                           <directory>${basedir}/target/test-classes</directory>
                           <targetPath>WEB-INF/classes</targetPath>
                        </resource>
                     </webResources>
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                  <packagingIncludes>
                     WEB-INF/classes/**/*,
                     WEB-INF/test-classes/**/*
                  </packagingIncludes>
                     <packagingExcludes>
                        WEB-INF/lib/*grpc-bridge-${resteasy.version}.jar,
                     </packagingExcludes>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>not-wildfly</id>
         <activation>
            <property>
               <name>inWildFly</name>
               <value>false</value>
            </property>
         </activation>
         <build>
            <plugins>
               <plugin>
                  <artifactId>maven-war-plugin</artifactId>
                  <version>3.2.3</version>
                  <configuration>
                     <overlays>
                        <overlay>
                           <groupId>jaxrs.example</groupId>
                           <artifactId>jaxrs.example</artifactId>>
                           <excludes>
                              <exclude>**/*</exclude>
                           </excludes>
                        </overlay>
                     </overlays>
                     <webResources>
                        <resource>
                           <directory>${basedir}/target/test-classes</directory>
                           <targetPath>WEB-INF/classes</targetPath>
                        </resource>
                     </webResources>
                     <failOnMissingWebXml>false</failOnMissingWebXml>
                     <packagingIncludes>
                        WEB-INF/lib/*grpc*,
                        WEB-INF/lib/*guava*,
                        WEB-INF/lib/perfmark*,
                        WEB-INF/lib/*protobuf*,
                        WEB-INF/classes/**/*,
                        WEB-INF/test-classes/**/*
                     </packagingIncludes>
                     <packagingExcludes>
                        WEB-INF/lib/*grpc-bridge-${resteasy.version}.jar,
                     </packagingExcludes>
                  </configuration>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
