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

    <groupId>org.bigraphs.framework</groupId>
    <artifactId>framework-parent</artifactId>
    <version>2.3.1</version>
    <packaging>pom</packaging>
    <name>Bigraph Parent Project</name>
    <description>
        A rich framework for modeling, simulating, and verifying bigraphical reactive systems.
    </description>
    <url>https://www.bigraphs.org/</url>

    <modules>
        <module>core</module>
        <module>visualization</module>
        <module>converter</module>
        <module>simulation</module>
        <module>documentation</module>
    </modules>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <comments>Main license of the Bigraph Framework.</comments>
        </license>
        <license>
            <name>GNU Lesser General Public License, version 2.1</name>
            <url>https://opensource.org/licenses/LGPL-2.1</url>
            <comments>
                Applies only to the jLibBig components.
                jLibBig is a Java library for bigraphs and bigraphical reactive systems.
                A modified version is used within the simulation module of Bigraph Framework
                and remains under LGPL v2.1.
            </comments>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>dgrzelak</id>
            <name>Dominik Grzelak</name>
            <email>dominik.grzelak@tu-dresden.de</email>
            <organization>Technische Universität Dresden</organization>
            <organizationUrl>https://tu-dresden.de/ing/informatik/smt/st</organizationUrl>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+2</timezone>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:https://github.com/bigraph-toolkit-suite/bigraphs.bigraph-framework.git</connection>
        <developerConnection>scm:git@github.com:bigraph-toolkit-suite/bigraphs.bigraph-framework.git
        </developerConnection>
        <url>https://github.com/bigraph-toolkit-suite/bigraphs.bigraph-framework</url>
        <tag>HEAD</tag>
    </scm>

    <distributionManagement>
        <snapshotRepository>
            <id>central</id>
            <url>https://central.sonatype.com</url>
        </snapshotRepository>
    </distributionManagement>

    <repositories>
        <repository>
            <id>eclipse-releases-maven</id>
            <url>https://repo.eclipse.org/content/groups/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

    <properties>
        <project.type>multi</project.type>
        <java.version>21</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <maven.compiler.release>${java.version}</maven.compiler.release>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <skip.security.check>true</skip.security.check>
        <!-- For documentation -->
        <doclint>none</doclint>
        <project.usermanual.outputDirectory>../documentation/v2-docusaurus/static/apidocs
        </project.usermanual.outputDirectory>
        <!-- Versions -->
        <bigraph.metamodel.version>2.0.2</bigraph.metamodel.version>
        <emf.ecore.version>2.40.0</emf.ecore.version>
        <emf.ecore.xmi.version>2.39.0</emf.ecore.xmi.version>
        <emf.common.version>2.43.0</emf.common.version>
        <emf.codegen.version>2.27.0</emf.codegen.version>
        <!-- Should match with the version in Spring Data CDO + Bigraph Ecore Metamodel -->
        <emf.cdo.version>4.20.0-SNAPSHOT</emf.cdo.version><!--4.20.0.v20221124-1637-->
        <!-- Should match with the version in Spring Data CDO + Bigraph Ecore Metamodel -->
        <emf.cdo.common.version>4.20.0-SNAPSHOT</emf.cdo.common.version><!--4.20.0.v20221106-0628-->
        <!-- Should match with the version in Spring Data CDO -->
        <eclipse.core.runtime.version>3.34.0</eclipse.core.runtime.version>
        <eclipse.collections.version>11.1.0</eclipse.collections.version>
        <guava.version>33.4.8-jre</guava.version>
        <jgrapht.version>1.5.2</jgrapht.version>
        <junit.version>5.6.2</junit.version>
        <log4j.version>1.7.30</log4j.version>
        <graphviz.version>0.18.1</graphviz.version>
        <graphstream.version>2.0</graphstream.version>
        <spring.boot.version>2.3.1.RELEASE</spring.boot.version>
    </properties>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.tycho</groupId>
                    <artifactId>tycho-maven-plugin</artifactId>
                    <version>4.0.8</version>
                    <extensions>true</extensions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.4.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.13.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>3.2.3</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>3.1.3</version>
                </plugin>
                <plugin>
                    <groupId>org.sonatype.central</groupId>
                    <artifactId>central-publishing-maven-plugin</artifactId>
                    <version>0.8.0</version>
                    <extensions>true</extensions>
                    <configuration>
                        <publishingServerId>central</publishingServerId>
                        <!--                        <autoPublish>true</autoPublish>-->
                        <!--                        <waitUntil>published</waitUntil>-->
                        <autoPublish>false</autoPublish>
                        <waitUntil>validated</waitUntil>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.12.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.4.2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>3.5.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>3.6.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.3.1</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>3.1.3</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>3.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>${spring.boot.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <!--                <plugin>-->
                <!--                    <groupId>org.owasp</groupId>-->
                <!--                    <artifactId>dependency-check-maven</artifactId>-->
                <!--                    <version>8.4.2</version>-->
                <!--                    <configuration>-->
                <!--                        <excludes>-->
                <!--                            <exclude>org.eclipse.platform:org.eclipse.equinox.common</exclude>-->
                <!--                            <exclude>org.apache.bcel:bcel</exclude>-->
                <!--                            &lt;!&ndash;                            <exclude>org.eclipse.emf:org.eclipse.emf.codegen</exclude>&ndash;&gt;-->
                <!--                            &lt;!&ndash;                            <exclude>com.google.guava:guava</exclude>&ndash;&gt;-->
                <!--                        </excludes>-->
                <!--                        &lt;!&ndash; fail the build for CVSS greater than or equal to 8 &ndash;&gt;-->
                <!--                        <failBuildOnCVSS>10</failBuildOnCVSS>-->
                <!--                        <skipProvidedScope>true</skipProvidedScope>-->
                <!--                        <skipRuntimeScope>true</skipRuntimeScope>-->
                <!--                    </configuration>-->
                <!--                    <executions>-->
                <!--                        <execution>-->
                <!--                            <goals>-->
                <!--                                <goal>check</goal>-->
                <!--                            </goals>-->
                <!--                        </execution>-->
                <!--                    </executions>-->
                <!--                </plugin>-->
            </plugins>
        </pluginManagement>
        <plugins>
            <!-- SOURCE -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- JAVADOC -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
                    <failOnError>false</failOnError>
                    <release>${maven.compiler.release}</release>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <!-- all, none, html-->
                            <doclint>${doclint}</doclint>
                            <!-- <excludePackageNames>org.springframework.*</excludePackageNames>-->
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- COMPILER -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
            <!-- JAR -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
            </plugin>
            <!-- RESOURCES -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <propertiesEncoding>${project.build.sourceEncoding}</propertiesEncoding>
                </configuration>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-resources-for-deploy</id>
                        <phase>install</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target/classes/</outputDirectory>
                            <overwrite>true</overwrite>
                            <resources>
                                <resource>
                                    <directory>${basedir}/../etc/</directory>
                                    <filtering>true</filtering>
                                    <includes>
                                        <include>log4j.properties</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-license-and-notice</id>
                        <phase>prepare-package</phase> <!-- Or process-resources -->
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.outputDirectory}/META-INF</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/../</directory> <!-- Source directory (project root) -->
                                    <includes>
                                        <include>LICENSE</include>
                                        <include>NOTICE</include>
                                    </includes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <!-- DEPLOY -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <configuration>
                    <!-- disable the default existing mapping -->
                    <skip>true</skip>
                </configuration>
            </plugin>
            <!-- INSTALL -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <executions>
                    <execution>
                        <id>install-libs-jlibbig</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/etc/libs/jlibbig-0.0.4/jlibbig-0.0.4.jar</file>
                            <groupId>it.uniud.mads.jlibbig</groupId>
                            <artifactId>jlibbig</artifactId>
                            <version>0.0.4</version>
                            <pomFile>${project.basedir}/etc/libs/jlibbig-0.0.4/jlibbig-0.0.4.pom</pomFile>
                            <generatePom>false</generatePom>
                            <packaging>jar</packaging>
                        </configuration>
                    </execution>
                    <execution>
                        <id>install-libs-emf-compare</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/etc/libs/org.eclipse.emf.compare_3.5.3.201911051515.jar</file>
                            <groupId>org.eclipse.emf.compare</groupId>
                            <artifactId>org.eclipse.emf.compare</artifactId>
                            <version>3.5.3.201911051515</version>
                            <generatePom>true</generatePom>
                            <packaging>jar</packaging>
                        </configuration>
                    </execution>
                    <execution>
                        <id>install-libs-bighuggies-bisimulation</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <configuration>
                            <file>${project.basedir}/etc/libs/bighuggies-bisimulation-1.0-SNAPSHOT.jar</file>
                            <groupId>bighuggies</groupId>
                            <artifactId>bisimulation</artifactId>
                            <version>1.0.0</version>
                            <generatePom>true</generatePom>
                            <packaging>jar</packaging>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
        </dependency>
        <dependency>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.bigraphs.model</groupId>
                <artifactId>bigraph-ecore-model</artifactId>
                <version>${bigraph.metamodel.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bigraphs.framework</groupId>
                <artifactId>bigraph-core</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bigraphs.framework</groupId>
                <artifactId>bigraph-visualization</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bigraphs.framework</groupId>
                <artifactId>bigraph-simulation</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bigraphs.framework</groupId>
                <artifactId>bigraph-converter</artifactId>
                <version>${project.version}</version>
            </dependency>
            <!-- Misc -->
            <!-- This dependency is installed in the local Maven repository from the ./etc/libs/ folder -->
            <!-- Execute mvn initialize first. See Readme. -->
            <dependency>
                <groupId>it.uniud.mads.jlibbig</groupId>
                <artifactId>jlibbig</artifactId>
                <version>0.0.4</version>
            </dependency>
            <!-- This dependency is installed in the local Maven repository from the ./etc/libs/ folder -->
            <!-- Execute mvn initialize first. See Readme. -->
            <dependency>
                <groupId>bighuggies</groupId>
                <artifactId>bisimulation</artifactId>
                <version>1.0.0</version>
            </dependency>
            <dependency>
                <groupId>org.bigraphs.model</groupId>
                <artifactId>bigred-core</artifactId>
                <version>1.0.0.20130228-1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-vfs2</artifactId>
                <version>2.10.0</version>
            </dependency>
            <!-- EMF -->
            <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.eclipse.emf</groupId>
                <artifactId>org.eclipse.emf.common</artifactId>
                <version>${emf.common.version}</version>
            </dependency>
            <!--
                EMF Compare must be installed via `mvn initialize`.
                This dependency is also shaded into `bigraph-core`.
            -->
            <dependency>
                <groupId>org.eclipse.emf.compare</groupId>
                <artifactId>org.eclipse.emf.compare</artifactId>
                <version>3.5.3.201911051515</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.core.expressions</artifactId>
                <version>3.5.100</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.emf</groupId>
                <artifactId>org.eclipse.emf.codegen</artifactId>
                <version>${emf.codegen.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.equinox.app</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.equinox.common</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.equinox.preferences</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.equinox.registry</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.platform</groupId>
                        <artifactId>org.eclipse.osgi</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.eclipse.platform</groupId>
                <artifactId>org.eclipse.core.runtime</artifactId>
                <version>${eclipse.core.runtime.version}</version>
            </dependency>
            <!-- Collections -->
            <dependency>
                <groupId>org.eclipse.collections</groupId>
                <artifactId>eclipse-collections-api</artifactId>
                <version>${eclipse.collections.version}</version>
            </dependency>
            <dependency>
                <groupId>org.eclipse.collections</groupId>
                <artifactId>eclipse-collections</artifactId>
                <version>${eclipse.collections.version}</version>
            </dependency>
            <!-- Spring Framework -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring.boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${spring.boot.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
            <!-- Other -->
            <dependency>
                <groupId>com.github.javaparser</groupId>
                <artifactId>javaparser-core</artifactId>
                <version>3.14.5</version>
            </dependency>
            <dependency>
                <groupId>com.github.javaparser</groupId>
                <artifactId>javaparser-symbol-solver-core</artifactId>
                <version>3.25.5</version>
            </dependency>
            <dependency>
                <groupId>net.jodah</groupId>
                <artifactId>typetools</artifactId>
                <version>0.6.2</version>
            </dependency>
            <!-- Graph-related -->
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-core</artifactId>
                <version>${jgrapht.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-ext</artifactId>
                <version>${jgrapht.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jgrapht</groupId>
                <artifactId>jgrapht-io</artifactId>
                <version>${jgrapht.version}</version>
            </dependency>
            <dependency>
                <groupId>guru.nidi</groupId>
                <artifactId>graphviz-java-all-j2v8</artifactId>
                <version>${graphviz.version}</version>
            </dependency>
            <dependency>
                <groupId>org.graphstream</groupId>
                <artifactId>gs-core</artifactId>
                <version>${graphstream.version}</version>
            </dependency>
            <dependency>
                <groupId>org.graphstream</groupId>
                <artifactId>gs-ui-swing</artifactId>
                <version>${graphstream.version}</version>
            </dependency>
            <dependency>
                <groupId>org.graphstream</groupId>
                <artifactId>gs-algo</artifactId>
                <version>${graphstream.version}</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20231013</version>
            </dependency>
            <dependency>
                <groupId>org.checkerframework</groupId>
                <artifactId>checker-qual</artifactId>
                <version>3.51.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.11</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.20.0</version>
            </dependency>
            <dependency>
                <groupId>io.r2dbc</groupId>
                <artifactId>r2dbc-proxy</artifactId>
                <version>1.1.6.RELEASE</version>
                <scope>provided</scope> <!-- will not be exported -->
            </dependency>
            <!-- Logging -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${log4j.version}</version>
                <scope>provided</scope> <!-- will not be exported -->
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
                <scope>provided</scope> <!-- will not be exported -->
                <optional>true</optional>
            </dependency>
            <!-- Deployment -->
            <dependency>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.8.0</version>
            </dependency>
            <!-- Test -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring.boot.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <profiles>
        <!-- ************************************************************ -->
        <!-- Profile for Building a Fat Jar (containing every dependency) -->
        <!-- ************************************************************ -->
        <profile>
            <id>fatJar</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>shade</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                                <configuration>
                                    <!--<minimizeJar>true</minimizeJar>-->
                                    <createDependencyReducedPom>true</createDependencyReducedPom>
                                    <filters>
                                        <filter>
                                            <artifact>*:*</artifact>
                                            <excludes>
                                                <exclude>META-INF/MANIFEST.MF</exclude>
                                                <exclude>META-INF/*.SF</exclude>
                                                <exclude>META-INF/*.DSA</exclude>
                                                <exclude>META-INF/*.RSA</exclude>
                                                <exclude>schema/*</exclude>
                                                <exclude>.options</exclude>
                                                <exclude>.api_description</exclude>
                                                <exclude>*.profile</exclude>
                                                <exclude>*.html</exclude>
                                                <exclude>about.*</exclude>
                                                <exclude>about_files/*</exclude>
                                                <exclude>plugin.xml</exclude>
                                                <exclude>systembundle.properties</exclude>
                                                <exclude>profile.list</exclude>
                                            </excludes>
                                        </filter>
                                    </filters>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- ************************************** -->
        <!-- Profile for building the Java API Docs -->
        <!-- ************************************** -->
        <profile>
            <id>distribute</id>
            <properties>
                <maven.main.skip>true</maven.main.skip>
                <maven.test.skip>true</maven.test.skip>
                <maven.install.skip>true</maven.install.skip>
                <maven.deploy.skip>true</maven.deploy.skip>
                <skipTests>true</skipTests>
            </properties>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>aggregate-javadoc</id>
                                <goals>
                                    <goal>aggregate</goal>
                                </goals>
                                <phase>package</phase>
                                <configuration>
                                    <additionalJOptions>--allow-script-in-comments</additionalJOptions>
                                    <!-- all, none, html-->
                                    <doclint>${doclint}</doclint>
<!--                                    <destDir>./</destDir>-->
                                    <author>true</author>
                                    <bottom>Copyright &#169; 2021-present. Dominik Grzelak, Software Technology Group,
                                        Technische Universität Dresden. All rights reserved.
                                    </bottom>
                                    <excludePackageNames>com.microstar.xml:GCF</excludePackageNames>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>copy-resources-for-deploy</id>
                                <configuration>
                                    <skip>true</skip>
                                </configuration>
                            </execution>
                            <execution>
                                <id>copy-api-resources</id>
                                <phase>package</phase>
                                <goals>
                                    <goal>copy-resources</goal>
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.usermanual.outputDirectory}</outputDirectory>
                                    <skip>true</skip>
                                    <resources>
                                        <resource>
                                            <directory>${basedir}/../target/reports/apidocs</directory>
                                            <filtering>true</filtering>
                                        </resource>
                                    </resources>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- ************************************************ -->
        <!-- Profile for deployment to the Central Repository -->
        <!-- ************************************************ -->
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <keyname>0x26A857F8</keyname>
                                    <passphraseServerId>0x26A857F8</passphraseServerId>
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-deploy-plugin</artifactId>
                    </plugin>
                    <plugin>
                        <groupId>org.sonatype.central</groupId>
                        <artifactId>central-publishing-maven-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
