<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>

  <parent>
    <groupId>org.operaton.bpm</groupId>
    <artifactId>operaton-root</artifactId>
    <version>1.0.0-beta-4</version>
  </parent>

  <artifactId>operaton-parent</artifactId>
  <name>Operaton - Parent POM</name>
  <inceptionYear>2024</inceptionYear>
  <packaging>pom</packaging>

  <description>
    This pom is the parent of all Operaton projects
  </description>

  <properties>
    <version.spring-boot>3.4.4</version.spring-boot>
    <version.resteasy>3.15.6.Final</version.resteasy>
    <version.jersey3>3.1.10</version.jersey3>
    <!-- use minimum version of resteasy and jersey -->
    <version.jaxrs.api>2.0.1.Final</version.jaxrs.api>
    <version.groovy>4.0.26</version.groovy>
    <version.jython>2.7.2</version.jython>
    <version.graal.js>21.3.12</version.graal.js>
    <version.nashorn>15.6</version.nashorn>
    <version.icu.icu4j>71.1</version.icu.icu4j>
    <!-- json-smart and accessors-smart are runtime dependencies of json-path -->
    <version.json-path>2.9.0</version.json-path>
    <version.json-smart>2.5.2</version.json-smart>
    <version.accessors-smart>2.5.2</version.accessors-smart>
    <version.commons-codec>1.17.2</version.commons-codec>
    <version.gson>2.8.9</version.gson>
    <version.openjpa>2.4.3</version.openjpa>
    <version.hibernate>6.6.10.Final</version.hibernate>
    <version.hikaricp>4.0.3</version.hikaricp>
    <version.jackson>2.15.2</version.jackson>
    <version.httpclient>4.5.14</version.httpclient>
    <version.httpclient5>5.4.1</version.httpclient5>

    <version.assertj>3.27.3</version.assertj>
    <version.mockito>5.16.1</version.mockito>
    <version.jna>5.16.0</version.jna>
    <version.testcontainers>1.20.6</version.testcontainers>

    <version.commonj>1.1.0</version.commonj>

    <!-- application servers -->
    <version.wildfly>35.0.1.Final</version.wildfly>
    <version.wildfly.core>27.0.1.Final</version.wildfly.core>

    <version.tomcat>10.1.39</version.tomcat>

    <version.arquillian>1.9.4.Final</version.arquillian>

    <version.shrinkwrap.resolvers>3.3.3</version.shrinkwrap.resolvers>
    <version.selenium>4.31.0</version.selenium>
    <version.freemarker>2.3.31</version.freemarker>

    <version.jboss-javaee-spec>3.0.2.Final</version.jboss-javaee-spec>

    <version.nodejs>22.13.0</version.nodejs>
    <version.npm>11.0.0</version.npm>

    <jacoco.argLine/>
    <surefire.memArgs>-Xmx1024m -XX:MetaspaceSize=128m</surefire.memArgs>
    <surefire.argLine>${jacoco.argLine} ${surefire.memArgs} -Duser.language=en -Duser.region=US -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${project.build.directory}/heap_dump.hprof</surefire.argLine>
    <surefire.forkCount>1</surefire.forkCount>

    <!-- profile activation properties -->
    <with-sources>false</with-sources>
    <with-javadocs>false</with-javadocs>

    <!-- OSGi bundles properties -->
    <operaton.artifact />
    <operaton.osgi.import.operaton.spin.version>version="[$(version;==;${operaton.spin.version.clean}),$(version;=+;${operaton.spin.version.clean}))"</operaton.osgi.import.operaton.spin.version>
    <operaton.osgi.import.operaton.connect.version>version="[$(version;==;${operaton.connect.version.clean}),$(version;=+;${operaton.connect.version.clean}))"</operaton.osgi.import.operaton.connect.version>
    <operaton.osgi.import.operaton.commons.version>version="[$(version;==;${operaton.commons.version.clean}),$(version;=+;${operaton.commons.version.clean}))"</operaton.osgi.import.operaton.commons.version>
    <operaton.osgi.import.operaton.version>version="[$(version;==;${operaton.osgi.version.clean}),$(version;=+;${operaton.osgi.version.clean}))"</operaton.osgi.import.operaton.version>
    <operaton.osgi.import.strict.version>version="[$(version;===;${operaton.osgi.version.clean}),$(version;==+;${operaton.osgi.version.clean}))"</operaton.osgi.import.strict.version>
    <operaton.osgi.import.default.version>[$(version;==;$(@)),$(version;+;$(@)))</operaton.osgi.import.default.version>
    <operaton.osgi.import.defaults>
    </operaton.osgi.import.defaults>
    <operaton.osgi.import.before.defaults />
    <operaton.osgi.import.additional />
    <operaton.osgi.import.pkg>
      ${operaton.osgi.import.before.defaults},
      ${operaton.osgi.import.defaults},
      ${operaton.osgi.import.additional},
      *
    </operaton.osgi.import.pkg>
    <operaton.osgi.activator />
    <operaton.osgi.failok>false</operaton.osgi.failok>
    <operaton.osgi.export>${operaton.osgi.export.pkg};${operaton.osgi.version};-noimport:=true</operaton.osgi.export>
    <!--
    <operaton.osgi.export.pkg>!*.impl;${operaton.artifact}*</operaton.osgi.export.pkg>
    <operaton.osgi.private.pkg>${operaton.artifact}*.impl</operaton.osgi.private.pkg>
    -->
    <operaton.osgi.export.pkg>${operaton.artifact}*</operaton.osgi.export.pkg>
    <operaton.osgi.private.pkg />
    <operaton.osgi.version>version=${project.version}</operaton.osgi.version>
    <operaton.osgi.split.pkg>-split-package:=first</operaton.osgi.split.pkg>
    <operaton.osgi.import>${operaton.osgi.import.pkg}</operaton.osgi.import>
    <operaton.osgi.dynamic />
    <operaton.osgi.symbolic.name>${operaton.artifact}</operaton.osgi.symbolic.name>
    <operaton.osgi.exclude.dependencies>false</operaton.osgi.exclude.dependencies>
    <operaton.osgi.remove.headers>Ignore-Package,Include-Resource,Private-Package,Bundle-DocURL</operaton.osgi.remove.headers>
    <operaton.osgi.include.resource>{maven-resources}</operaton.osgi.include.resource>
    <operaton.osgi.embed />
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.operaton.bpm</groupId>
        <artifactId>operaton-bom</artifactId>
        <version>${project.parent.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

   <build>
    <pluginManagement>
      <plugins>
        <!-- test plugins -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <runOrder>hourly</runOrder>
            <systemPropertyVariables>
              <myWorkingDir>${project.build.directory}</myWorkingDir>
            </systemPropertyVariables>
            <redirectTestOutputToFile>true</redirectTestOutputToFile>
            <forkCount>${surefire.forkCount}</forkCount>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <runOrder>hourly</runOrder>
          </configuration>
          <executions>
              <execution>
                <goals>
                  <goal>integration-test</goal>
                  <goal>verify</goal>
                </goals>
              </execution>
            </executions>
        </plugin>

        <!-- artifact plugins -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.4.2</version>
          <configuration>
            <skipIfEmpty>true</skipIfEmpty>
            <archive>
              <!-- explicitly specify manifestFile because otherwise it overrides the generated one from bundle-plugin -->
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-ejb-plugin</artifactId>
          <configuration>
            <ejbVersion>3.1</ejbVersion>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-ear-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-rar-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <configuration>
            <createSourcesJar>true</createSourcesJar>
          </configuration>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <configuration>
           <excludeDependencies>${operaton.osgi.exclude.dependencies}</excludeDependencies>
           <instructions>
             <Bundle-Name>${project.name}</Bundle-Name>
             <Bundle-SymbolicName>${operaton.osgi.symbolic.name}</Bundle-SymbolicName>
             <Bundle-Activator>${operaton.osgi.activator}</Bundle-Activator>
             <Export-Package>${operaton.osgi.export}</Export-Package>
             <Import-Package>${operaton.osgi.import}</Import-Package>
             <DynamicImport-Package>${operaton.osgi.dynamic}</DynamicImport-Package>
             <Private-Package>${operaton.osgi.private.pkg}</Private-Package>
             <Implementation-Title>operaton</Implementation-Title>
             <Implementation-Version>${project.version}</Implementation-Version>
             <Include-Resource>${operaton.osgi.include.resource}</Include-Resource>
             <_versionpolicy>${operaton.osgi.import.default.version}</_versionpolicy>
             <_removeheaders>${operaton.osgi.remove.headers}</_removeheaders>
             <_failok>${operaton.osgi.failok}</_failok>
             <Export-Service>${operaton.osgi.export.service}</Export-Service>
             <Import-Service>${operaton.osgi.import.service}</Import-Service>
             <Embed-Dependency>${operaton.osgi.embed}</Embed-Dependency>
            </instructions>
           <versions>
            <operaton.osgi.version.clean>${project.version}</operaton.osgi.version.clean>
            <operaton.connect.version.clean>${project.version}</operaton.connect.version.clean>
            <operaton.spin.version.clean>${project.version}</operaton.spin.version.clean>
            <operaton.commons.version.clean>${project.version}</operaton.commons.version.clean>
           </versions>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>sql-maven-plugin</artifactId>
          <configuration>
            <keepFormat>true</keepFormat>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <failOnError>false</failOnError>
            <additionalJOptions>
              <additionalJOption>-Xdoclint:none</additionalJOption>
              <additionalJOption>--ignore-source-errors</additionalJOption>
            </additionalJOptions>
            <doctitle>Operaton Javadocs ${project.version}</doctitle>
            <windowtitle>Operaton Javadocs ${project.version}</windowtitle>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.eclipse.transformer</groupId>
          <artifactId>transformer-maven-plugin</artifactId>
          <configuration>
            <rules>
              <jakartaDefaults>true</jakartaDefaults>
              <renames>
                <rename>jar:file:${org.operaton.bpm:operaton-engine:jar}!/META-INF/operaton-renames.properties</rename>
              </renames>
            </rules>
            <classifier>jakarta</classifier>
          </configuration>
        </plugin>

        <plugin>
          <groupId>com.github.eirslett</groupId>
          <artifactId>frontend-maven-plugin</artifactId>
          <configuration>
            <nodeVersion>v${version.nodejs}</nodeVersion>
            <npmVersion>${version.npm}</npmVersion>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
            <!-- https://github.com/camunda/camunda-bpm-platform/issues/3996 -->
            <wait>750</wait>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <profiles>
    <profile>
      <id>license-header-check</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.mycila</groupId>
            <artifactId>license-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>coverage</id>
      <activation>
        <file>
          <!-- files generated by 'build.yml' pipeline -->
          <exists>target/executeJacoco</exists>
        </file>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>prepare-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <execution>
                <id>report</id>
                <phase>test</phase>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <propertyName>${jacoco.argLine}</propertyName>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>coverage-not-enabled</id>
      <activation>
        <file>
          <missing>target/executeJacoco</missing>
        </file>
      </activation>
      <properties>
        <jacoco.argLine/>
      </properties>
    </profile>

    <profile>
      <id>sonatype-oss-release</id>
      <properties>
        <with-sources>true</with-sources>
        <with-javadocs>true</with-javadocs>
      </properties>
    </profile>

    <profile>
      <id>sources</id>
      <activation>
        <property>
          <name>with-sources</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>javadocs</id>
      <activation>
        <property>
          <name>with-javadocs</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <failOnError>false</failOnError>
              <additionalJOptions>
                <additionalJOption>-Xdoclint:none</additionalJOption>
                <additionalJOption>--ignore-source-errors</additionalJOption>
              </additionalJOptions>
              <doctitle>Operaton Javadocs ${project.version}</doctitle>
              <windowtitle>Operaton Javadocs ${project.version}</windowtitle>
            </configuration>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

  <repositories>
    <repository>
      <id>JBoss public</id>
      <name>jboss</name>
      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
    </repository>
  </repositories>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <organization>
    <name>Operaton</name>
    <url>http://www.operaton.com</url>
  </organization>

  <url>http://www.operaton.org</url>

</project>


