<?xml version="1.0" encoding="UTF-8" standalone="no"?><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>

  <artifactId>test.simpleStream.spring</artifactId>
  <packaging>jar</packaging>
  <name>Test artifact: A simple spring stream</name>
  <description>A simple stream application for spring cloud stream for testing deployments.</description>

  <parent>
     <groupId>de.iip-ecosphere.platform</groupId>
     <artifactId>platformDependenciesSpring</artifactId>
     <version>0.8.0</version>
  </parent>

  <dependencies>
<!--  -->    
    <dependency> <!-- override due to CVE-2021-44228 -->
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>    
      <version>[2.15.0]</version><!--$NO-MVN-MAN-VER$-->
    </dependency>
    <dependency> <!-- override due to CVE-2021-44228 -->
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>    
      <version>[2.15.0]</version><!--$NO-MVN-MAN-VER$-->
    </dependency>
    <dependency>
     <groupId>de.iip-ecosphere.platform</groupId>
     <artifactId>transport</artifactId>
     <version>${project.version}</version>
    </dependency>
    <dependency>
     <groupId>de.iip-ecosphere.platform</groupId>
     <artifactId>services.environment</artifactId>
     <version>${project.version}</version>
    </dependency>
    <dependency>
     <groupId>de.iip-ecosphere.platform</groupId>
     <artifactId>services.spring.loader</artifactId>
     <version>${project.version}</version>
    </dependency>
    <dependency>
     <groupId>de.iip-ecosphere.platform</groupId>
     <artifactId>services.environment.spring</artifactId>
     <version>${project.version}</version>
    </dependency>
    <dependency>  <!-- binder, not plugin - stays here for spring -->
      <groupId>de.iip-ecosphere.platform</groupId>
      <artifactId>transport.spring.amqp</artifactId>
      <version>${project.version}</version>
    </dependency>  
    <dependency>    
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.el</artifactId>
        <version>${org.glassfish.jakarta.el.version}</version>
        <optional>false</optional>
    </dependency>    
    <dependency>
      <groupId>de.iip-ecosphere.platform</groupId>
      <artifactId>support.aas</artifactId>
      <version>${project.version}</version>
      <classifier>tests</classifier>
      <type>test-jar</type>
    </dependency>  
    <dependency>
      <groupId>de.iip-ecosphere.platform</groupId>
      <artifactId>support</artifactId>
      <version>${project.version}</version>
      <classifier>tests</classifier>
      <type>test-jar</type>
    </dependency>  
    <dependency>
      <groupId>de.iip-ecosphere.platform</groupId>
      <artifactId>transport</artifactId>
      <version>${project.version}</version>
      <classifier>tests</classifier>
      <type>test-jar</type>
    </dependency>  
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>         
        </exclusions>
    </dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
</dependency>    
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-beans</artifactId>
</dependency>
  </dependencies>
  
  <build>
    <testResources> 
        <testResource> 
            <directory>src/test/resources</directory>
            <includes>
                <include>application.yml</include>
                <include>identityStore.yml</include>
                <include>deployment*.yml</include>
                <include>artifact*.zip</include>
            </includes>
        </testResource> 
        <testResource> 
            <directory>src/test</directory>
            <includes>
                <include>hiveMqv5Cfg/**</include>
                <include>hiveMqv5Cfg/**/*.*</include>
                <include>qpidCfg/**</include>
            </includes>
        </testResource> 
    </testResources>   
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
          <includeEmptyDirs>true</includeEmptyDirs>
        </configuration>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <version>3.7.1</version>
         <executions>
             <execution>
                 <id>hivemqv5</id>
                 <phase>package</phase>
                 <goals>
                     <goal>single</goal>
                 </goals>
                 <configuration>
                     <descriptors>
                         <descriptor>src/main/assembly/hivemqv5cfg.xml</descriptor>
                     </descriptors>
                     <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                     <appendAssemblyId>false</appendAssemblyId>
                     <finalName>hivemqv5cfg</finalName>
                     <attach>false</attach>
                 </configuration>
             </execution>
             <execution>
                 <id>qpid</id>
                 <phase>package</phase>
                 <goals>
                     <goal>single</goal>
                 </goals>
                 <configuration>
                     <descriptors>
                         <descriptor>src/main/assembly/qpidcfg.xml</descriptor>
                     </descriptors>
                     <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
                     <appendAssemblyId>false</appendAssemblyId>
                     <finalName>qpidcfg</finalName>
                     <attach>false</attach>
                 </configuration>
             </execution>
             <execution>
                 <id>make-assembly</id>
                 <phase>package</phase>
                 <goals>
                     <goal>single</goal>
                 </goals>
                 <configuration>
                     <descriptors>
                         <descriptor>src/main/assembly/assembly.xml</descriptor>
                     </descriptors>
                     <appendAssemblyId>false</appendAssemblyId>
                     <attach>true</attach>
                 </configuration>
             </execution>
             <execution>
                 <id>make-serviceAssembly</id>
                 <phase>package</phase>
                 <goals>
                     <goal>single</goal>
                 </goals>
                 <configuration>
                     <descriptors>
                         <descriptor>src/main/assembly/serviceZipAssembly.xml</descriptor>
                     </descriptors>
                     <!--<finalName>${project.build.finalName}-spring</finalName>-->
                     <appendAssemblyId>true</appendAssemblyId>
                     <attach>true</attach>
                 </configuration>
             </execution>
         </executions>
        </plugin>
        <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <version>2.4.2</version>
           <configuration>
               <addResources>false</addResources>
           </configuration>
           <executions>
               <execution>
                   <!-- without broker -->
                   <goals>
                       <goal>repackage</goal>
                   </goals>
                   <configuration>
                     <mainClass>de.iip_ecosphere.platform.services.spring.loader.AppStarter</mainClass>
                     <!--<mainClass>test.de.iip_ecosphere.platform.simpleStream.spring.Test</mainClass>-->
                     <!-- experimental, make it smaller for re-use in tests. However, automatic exclude based on 
                          top-level package not foreseen :( -->
                     <excludeGroupIds>org.jetbrains.xodus,org.rocksdb,org.jetbrains.kotlin,io.dropwizard.metrics,jakarta.xml.bind,org.bouncycastle,org.threeten</excludeGroupIds>
                     <excludes>
                        <dependency>
                          <groupId>com.hivemq</groupId>
                          <artifactId>hivemq-community-edition-embedded</artifactId>
                        </dependency>
                        <dependency>
                            <groupId>io.moquette</groupId>
                            <artifactId>moquette-broker</artifactId>
                        </dependency>
                        <dependency>
                          <groupId>com.hivemq</groupId>
                          <artifactId>hivemq-extension-sdk</artifactId>
                        </dependency>
                     </excludes>
                   </configuration>
               </execution>
<!-- CAN WE REMOVE FULL? -->               
               <execution>
                   <id>With Broker</id>
                   <configuration>
                       <mainClass>de.iip_ecosphere.platform.services.spring.loader.AppStarter</mainClass>
                       <classifier>full</classifier>
                   </configuration>
                   <goals>
                       <goal>repackage</goal>
                   </goals>
               </execution>               
           </executions>
       </plugin>
       <plugin>
            <groupId>de.iip-ecosphere.platform</groupId>
            <artifactId>dependency-plugin</artifactId>
            <version>${iip.version}</version>
            <executions>
               <execution>
                   <id>copy-dependencies</id>
                   <goals>
                       <goal>copy-dependencies</goal>
                   </goals>
                   <phase>prepare-package</phase>
                   <configuration>
                       <prependGroupId>false</prependGroupId>
                       <outputDirectory>${project.build.directory}/appJars</outputDirectory>
                       <overWriteReleases>false</overWriteReleases>
                       <overWriteSnapshots>true</overWriteSnapshots>
                       <overWriteIfNewer>true</overWriteIfNewer>
                       <includeScope>runtime</includeScope>
                       <excludeArtifactIds>tomcat-catalina, tomcat-coyote, tomcat-util, tomcat-api, 
                           tomcat-annotations-api, tomcat-util, tomcat-jaspic-api, tomcat-jni, tomcat-juli,
                           tomcat-servlet-api, tomcat-util, tomcat-util-scan, tomcat-el-api
                       </excludeArtifactIds> <!-- Spring may handle that through layers, BaSyx clash with Spring -->
                       <addAppLoader>true</addAppLoader>
                   </configuration>
               </execution>
	          <execution>
	            <id>build-classpath</id>
	            <phase>prepare-package</phase>
	            <goals>
	              <goal>build-classpath</goal>
	            </goals>
	            <configuration>
	                <outputFile>${project.build.directory}/test-classes/classpath</outputFile>
	                <prependGroupId>false</prependGroupId>
	                <localRepoProperty>jars</localRepoProperty>
	                <prefix>jars</prefix>
	                <overWriteIfNewer>true</overWriteIfNewer>
	                <fileSeparator>/</fileSeparator>
	                <pathSeparator>:</pathSeparator>
                    <includeScope>runtime</includeScope>
                    <addAppLoader>true</addAppLoader>
                    <prepends>
                      <prepend>${project.artifactId}-${project.version}.jar</prepend>
                    </prepends>
	              <!-- configure the plugin here -->
	            </configuration>
	          </execution>
                <execution>
                    <id>okto plugins</id>
                    <goals>
                        <goal>unpack-plugins</goal>
                    </goals>
                    <phase>compile</phase>
                    <configuration>
                        <plugins>
                            <plugin>
                                <artifactId>support.aas.basyx2</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>support.aas.basyx2.server</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>test.amqp.qpid</artifactId>
                                <asTest>true</asTest>
                            </plugin>
                            <plugin>
                                <artifactId>support.json-jackson</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>support.yaml-snakeyaml</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>support.commons-apache</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>support.log-slf4j-simple</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>transport.amqp</artifactId>
                            </plugin>
                            <plugin>
                                <artifactId>support.rest-spark</artifactId>
                            </plugin>
                        </plugins>
                        <version>${iip.version}</version>
                        <always>true</always>
                        <writeResolved>true</writeResolved> <!-- adjust assembly -->
                        <resolvedFile>${project.build.directory}/test-classes/resolved</resolvedFile>
                    </configuration>
                </execution>
                <execution>
                    <id>postprocess</id>
                    <goals>
                        <goal>split-classpath</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <archiveFiles>
                            <archiveFile>${project.build.directory}/${project.artifactId}-${project.version}.jar</archiveFile>
                            <archiveFile>${project.build.directory}/${project.artifactId}-${project.version}-spring.zip</archiveFile>
                            <archiveFile>${project.build.directory}/${project.artifactId}-${project.version}-full.jar</archiveFile>
                        </archiveFiles>
                    </configuration>
                    
                </execution>
            </executions>
        </plugin>
        
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <executable>java</executable>
                <arguments>
                    <argument>-Diip.appStarter.mainClass=test.de.iip_ecosphere.platform.simpleStream.spring.TestWithBroker</argument>
                    <argument>-jar</argument>
                    <argument>${project.build.directory}/${project.artifactId}-${project.version}-full.jar</argument>
                    <argument>--test.ingestCount=10</argument>
                </arguments>
            </configuration>
        </plugin>
        
    </plugins>
  </build>

</project>