<?xml version="1.0" encoding="UTF-8"?>
<!--
/*********************************************************************
* Copyright (c) 2022 Kentyou and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
-->
<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>org.eclipse.sensinact.gateway</groupId>
  <artifactId>sensinact-parent</artifactId>
  <version>0.0.2-SNAPSHOT</version>
  <packaging>pom</packaging>
  <url>https://projects.eclipse.org/projects/technology.sensinact</url>

  <inceptionYear>2017</inceptionYear>

  <mailingLists>
    <mailingList>
      <name>Eclipse sensiNact Development List</name>
      <post>sensinact-dev@eclipse.org</post>
    </mailingList>
  </mailingLists>

  <developers>
    <developer>
      <id>timothyjward</id>
      <name>Timothy Ward</name>
      <organization>Kentyou</organization>
      <organizationUrl>https://www.kentyou.com/</organizationUrl>
    </developer>
    <developer>
      <id>tcalmant</id>
      <name>Thomas Calmant</name>
      <organization>Kentyou</organization>
      <organizationUrl>https://www.kentyou.com/</organizationUrl>
    </developer>
    <developer>
      <id>juergen-albert</id>
      <name>Jürgen Albert</name>
      <organization>Data in Motion</organization>
      <organizationUrl>https://www.datainmotion.de/</organizationUrl>
    </developer>
    <developer>
      <id>stbischof</id>
      <name>Stefan Bischof</name>
    </developer>
  </developers>

  <contributors>
    <contributor>
      <name>Christophe Munilla</name>
      <organization>Kentyou</organization>
    </contributor>
    <contributor>
      <name>Etienne Gandrilee</name>
      <organization>CEA</organization>
    </contributor>
    <contributor>
      <name>Jander Botelho do Nascimento</name>
      <organization>CEA</organization>
    </contributor>
    <contributor>
      <name>Remi Druilhe</name>
      <organization>CEA</organization>
    </contributor>
  </contributors>

  <licenses>
    <license>
      <name>EPL 2.0</name>
      <url>http://www.eclipse.org/legal/epl-2.0</url>
      <distribution>repo</distribution>
      <comments>Except for 3rd party content and examples.</comments>
    </license>
  </licenses>

  <scm>
    <connection>scm:git:git@github.com:eclipse/org.eclipse.sensinact.gateway.git</connection>
    <developerConnection>scm:git:git@github.com:eclipse/org.eclipse.sensinact.gateway.git</developerConnection>
    <url>https://github.com/eclipse/org.eclipse.sensinact.gateway</url>
    <tag>HEAD</tag>
  </scm>

  <organization>
    <name>Eclipse Foundation</name>
    <url>https://www.eclipse.org/org/foundation/</url>
  </organization>

  <modules>
    <module>core</module>
    <module>southbound</module>
    <module>northbound</module>
    <module>examples</module>
    <module>sensinact-bom</module>
    <module>distribution</module>
  </modules>

  <properties>
    <!-- Build properties -->
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <maven.compiler.release>11</maven.compiler.release>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- compile dependency versions -->
    <osgi.core.version>7.0.0</osgi.core.version>
    <osgi.promise.version>1.3.0</osgi.promise.version>
    <osgi.function.version>1.1.0</osgi.function.version>
    <osgi.implementation.namespace.version>1.0.0</osgi.implementation.namespace.version>
    <osgi.ds.version>1.5.0</osgi.ds.version>
    <osgi.cm.version>1.6.1</osgi.cm.version>
    <osgi.pushstream.version>1.0.2</osgi.pushstream.version>
    <osgi.typedevent.version>1.0.0</osgi.typedevent.version>
    <osgi.feature.version>1.0.0</osgi.feature.version>
    <osgi.converter.version>1.0.9</osgi.converter.version>
    <gecko.emf.version>5.0.0</gecko.emf.version>
    <emf.common.version>2.28.0</emf.common.version>
    <emf.ecore.version>2.33.0</emf.ecore.version>
    <emf.ecore.xmi.version>2.18.0</emf.ecore.xmi.version>
    <slf4j.version>1.7.36</slf4j.version>
    <jackson.version>2.14.0</jackson.version>
    <jjwt.version>0.11.5</jjwt.version>

    <!-- runtime dependencies -->
    <felix.framework.version>7.0.3</felix.framework.version>
    <felix.scr.version>2.2.2</felix.scr.version>
    <felix.configadmin.version>1.9.24</felix.configadmin.version>
    <felix.cm.json.version>1.0.6</felix.cm.json.version>
    <felix.feature.version>1.0.0</felix.feature.version>
    <johnzon.version>1.2.19</johnzon.version>
    <aries.component-dsl.version>1.2.2</aries.component-dsl.version>
    <aries.typedevent.version>0.0.2-SNAPSHOT</aries.typedevent.version>
    <aries.spifly.version>1.3.6</aries.spifly.version>
    <felix.servlet.version>2.1.0</felix.servlet.version>
    <antlr.version>4.12.0</antlr.version>
    <metrics.version>4.2.19</metrics.version>

    <!-- test dependency versions -->
    <junit.version>5.9.0</junit.version>
    <mockito.version>4.7.0</mockito.version>
    <osgi.test.version>1.2.1</osgi.test.version>

    <!-- plugin dependency versions -->
    <bnd.version>7.0.0-SNAPSHOT</bnd.version>
  </properties>

  <repositories>
    <repository>
      <id>ossrh</id>
      <name>Sonatype Nexus Snapshots</name>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>eclipse-sensinact</id>
      <name>Eclipse Nexus - sensiNact group</name>
      <url>https://repo.eclipse.org/content/groups/sensinact/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>apache-snapshots</id>
      <name>Apache Snapshots</name>
      <url>https://repository.apache.org/snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>bnd-snapshots</id>
      <name>bnd snapshot repository</name>
      <url>https://bndtools.jfrog.io/bndtools/update-snapshot</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
    <pluginRepository>
      <id>eclipse-dash</id>
      <name>Eclipse Nexus</name>
      <url>https://repo.eclipse.org/content/repositories/dash-licenses-snapshots/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <dependencyManagement>
    <dependencies>
      <!-- Compile -->
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.core</artifactId>
        <version>${osgi.core.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.cmpn</artifactId>
        <version>${osgi.core.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>osgi.annotation</artifactId>
        <version>${osgi.core.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.namespace.implementation</artifactId>
        <version>${osgi.implementation.namespace.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.util.promise</artifactId>
        <version>${osgi.promise.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.util.function</artifactId>
        <version>${osgi.function.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.service.component</artifactId>
        <version>${osgi.ds.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.service.component.annotations</artifactId>
        <version>${osgi.ds.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.service.cm</artifactId>
        <version>${osgi.cm.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.service.typedevent</artifactId>
        <version>${osgi.typedevent.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.service.feature</artifactId>
        <version>${osgi.feature.version}</version>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.util.converter</artifactId>
        <version>${osgi.converter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geckoprojects.emf</groupId>
        <artifactId>org.gecko.emf.osgi.api</artifactId>
        <version>${gecko.emf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.geckoprojects.emf</groupId>
        <artifactId>org.gecko.emf.osgi.component</artifactId>
        <version>${gecko.emf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.emf</groupId>
        <artifactId>org.eclipse.emf.common</artifactId>
        <version>${emf.common.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.emf</groupId>
        <artifactId>org.eclipse.emf.ecore</artifactId>
        <version>${emf.ecore.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.emf</groupId>
        <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
        <version>${emf.ecore.xmi.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-api</artifactId>
        <version>${jjwt.version}</version>
      </dependency>
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-jackson</artifactId>
        <version>${jjwt.version}</version>
      </dependency>

      <!-- Runtime -->
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.framework</artifactId>
        <version>${felix.framework.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.scr</artifactId>
        <version>${felix.scr.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.configadmin</artifactId>
        <version>${felix.configadmin.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.cm.json</artifactId>
        <version>${felix.cm.json.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.feature</artifactId>
        <version>${felix.feature.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.aries.component-dsl</groupId>
        <artifactId>org.apache.aries.component-dsl.component-dsl</artifactId>
        <version>${aries.component-dsl.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.aries.typedevent</groupId>
        <artifactId>org.apache.aries.typedevent.bus</artifactId>
        <version>${aries.typedevent.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.util.pushstream</artifactId>
        <version>${osgi.pushstream.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.aries.spifly</groupId>
        <artifactId>org.apache.aries.spifly.dynamic.framework.extension</artifactId>
        <version>${aries.spifly.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.johnzon</groupId>
        <artifactId>johnzon-core</artifactId>
        <version>${johnzon.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-json_1.1_spec</artifactId>
        <version>1.5</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${slf4j.version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.http.servlet-api</artifactId>
        <version>${felix.servlet.version}</version>
        <exclusions>
          <!-- This confuses the resolver for some tests -->
          <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-servlet-api</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>io.jsonwebtoken</groupId>
        <artifactId>jjwt-impl</artifactId>
        <version>${jjwt.version}</version>
        <scope>runtime</scope>
      </dependency>

      <!-- Test -->
      <dependency>
        <groupId>org.osgi</groupId>
        <artifactId>org.osgi.test.bom</artifactId>
        <version>${osgi.test.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>${mockito.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.geckoprojects.emf</groupId>
        <artifactId>org.gecko.emf.osgi.codegen</artifactId>
        <version>${gecko.emf.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-junit-jupiter</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.test.junit5</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>bnd-process</goal>
              </goals>
              <configuration>
                <bnd>
                  <![CDATA[
                Bundle-Copyright: Copyright (c) (${now;YYYY}) Contributors to the Eclipse Foundation.
                Bundle-Description: ${project.description}
                Bundle-SymbolicName: ${project.groupId}.${project.artifactId}
                Git-Descriptor: ${system-allow-fail;git describe --dirty --always --abbrev=9}
                Git-SHA: ${system-allow-fail;git rev-list -1 --no-abbrev-commit HEAD}
                -noextraheaders: true
                -reproducible: true
                ]]>
                </bnd>
                <bndfile>bnd.bnd</bndfile>
              </configuration>
            </execution>
            <execution>
              <id>bnd-process-tests</id>
              <phase>process-test-classes</phase>
              <goals>
                <goal>bnd-process-tests</goal>
              </goals>
              <configuration>
                <bnd>
                  <![CDATA[
                Bundle-SymbolicName: ${project.groupId}.${project.artifactId}-tests
                Fragment-Host: ${project.groupId}.${project.artifactId}
                Git-Descriptor: ${system-allow-fail;git describe --dirty --always --abbrev=9}
                Git-SHA: ${system-allow-fail;git rev-list -1 --no-abbrev-commit HEAD}
                Test-Cases: ${classes;HIERARCHY_INDIRECTLY_ANNOTATED;org.junit.platform.commons.annotation.Testable;CONCRETE;NAMED;*.integration.*}
                ]]>
                </bnd>
                <bndfile>tests.bnd</bndfile>
                <testCases>useTestCasesHeader</testCases>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.3.0</version>
          <configuration>
            <archive>
              <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
            </archive>
            <skipIfEmpty>true</skipIfEmpty>
          </configuration>
          <executions>
            <execution>
              <id>test-jar</id>
              <phase>package</phase>
              <goals>
                <goal>test-jar</goal>
              </goals>
              <configuration>
                <archive>
                  <manifestFile>${project.build.testOutputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                </archive>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.2</version>
          <configuration>
            <excludes>
              <exclude>**/integration/**</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-resolver-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <executions>
            <execution>
              <id>resolve-test</id>
              <phase>pre-integration-test</phase>
              <goals>
                <goal>resolve</goal>
              </goals>
              <configuration>
                <writeOnChanges>true</writeOnChanges>
                <failOnChanges>false</failOnChanges>
                <includeDependencyManagement>true</includeDependencyManagement>
                <scopes>
                  <scope>compile</scope>
                  <scope>runtime</scope>
                  <scope>test</scope>
                </scopes>
                <bundles>
                  <bundle>${project.build.directory}/${project.build.finalName}-tests.jar</bundle>
                </bundles>
                <bndruns>
                  <include>*-test.bndrun</include>
                </bndruns>
              </configuration>
            </execution>
            <execution>
              <id>resolve</id>
              <goals>
                <goal>resolve</goal>
              </goals>
              <configuration>
                <writeOnChanges>true</writeOnChanges>
                <failOnChanges>false</failOnChanges>
                <includeDependencyManagement>true</includeDependencyManagement>
                <scopes>
                  <scope>compile</scope>
                  <scope>runtime</scope>
                </scopes>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>biz.aQute.bnd</groupId>
          <artifactId>bnd-testing-maven-plugin</artifactId>
          <version>${bnd.version}</version>
          <configuration>
            <resolve>false</resolve>
            <failOnChanges>false</failOnChanges>
            <includeDependencyManagement>true</includeDependencyManagement>
            <scopes>
              <scope>compile</scope>
              <scope>runtime</scope>
              <scope>test</scope>
            </scopes>
            <bundles>
              <bundle>${project.build.directory}/${project.build.finalName}-tests.jar</bundle>
            </bundles>
            <bndruns>
              <include>*-test.bndrun</include>
            </bndruns>
          </configuration>
          <executions>
            <execution>
              <goals>
                <goal>testing</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>


  <profiles>
    <profile>
      <id>eclipse-licenses-check</id>
      <activation>
        <property>
          <name>licenses-check</name>
          <value>true</value>
        </property>
      </activation>
      <pluginRepositories>
        <pluginRepository>
          <id>dash-licenses-snapshots</id>
          <url>https://repo.eclipse.org/content/repositories/dash-licenses-snapshots/</url>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
      <build>
        <plugins>
          <!-- https://github.com/eclipse/dash-licenses/blob/master/README.md#maven-plugin-options -->
          <plugin>
            <groupId>org.eclipse.dash</groupId>
            <artifactId>license-tool-plugin</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <executions>
              <execution>
                <id>license-check</id>
                <goals>
                  <goal>license-check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>dim-nexus</id>
      <distributionManagement>
        <repository>
          <id>dim_nexus</id>
          <uniqueVersion>false</uniqueVersion>
          <name>Dim Nexus</name>
          <url>https://devel.data-in-motion.biz/nexus/repository/sensinact/</url>
          <layout>default</layout>
        </repository>
      </distributionManagement>
    </profile>
  </profiles>
</project>