<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>com.remondis.limbus</groupId>
     <artifactId>limbus-parent</artifactId>
     <version>3.1.0</version>
     <name>Limbus Engine</name>
     <packaging>pom</packaging>
     <description>A multi classloader hot-deploy container</description>
     <url>https://github.com/remondis-it/limbus-engine</url>
     <scm>
          <connection>scm:git:git://github.com/remondis-it/limbus-engine.git</connection>
          <developerConnection>scm:git:ssh://github.com:remondis-it/limbus-engine.git</developerConnection>
          <url>https://github.com/remondis-it/limbus-engine</url>
     </scm>
     <licenses>
          <license>
               <name>The Apache Software License, Version 2.0</name>
               <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
          </license>
     </licenses>
     <developers>
          <developer>
               <id>schuettec</id>
               <name>Christopher Schütte</name>
               <email>christopher.schuette@remondis.de</email>
               <roles>
                    <role>developer</role>
               </roles>
               <timezone>+2</timezone>
               <url>N/A</url>
          </developer>
     </developers>
     <profiles>
          <profile>
               <id>doclint-java8-disable</id>
               <activation>
                    <jdk>[1.8,)</jdk>
               </activation>
               <properties>
                    <javadoc.opts>-Xdoclint:none</javadoc.opts>
               </properties>
          </profile>
          <profile>
               <id>sign</id>
               <activation>
                    <activeByDefault>false</activeByDefault>
               </activation>
               <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>
                                             <!-- This is necessary for gpg to not try to use the pinentry programs -->
                                             <gpgArguments>
                                                  <arg>--pinentry-mode</arg>
                                                  <arg>loopback</arg>
                                             </gpgArguments>
                                        </configuration>
                                   </execution>
                              </executions>
                         </plugin>
                    </plugins>
               </build>
          </profile>
     </profiles>
     <distributionManagement>
          <repository>
               <id>ossrh</id>
               <name>Central Repository OSSRH</name>
               <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
          </repository>
     </distributionManagement>
     <properties>
          <!-- SLF4J Version -->
          <limbus.slf4j.version>2.0.0-alpha1</limbus.slf4j.version>

          <!-- Shared Directory -->
          <sharedDirectory>${project.basedir}</sharedDirectory>

          <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
          <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
          <maven.compiler.source>11</maven.compiler.source>
          <maven.compiler.target>11</maven.compiler.target>

          <javadocExecutable>${java.home}/bin/javadoc</javadocExecutable>
     </properties>
     <modules>
          <module>limbus-engine-api</module>
          <module>limbus-engine-interfaces</module>
          <module>limbus-engine-impl</module>
          <module>limbus-showcase-plugin</module>
          <module>limbus-showcase-launcher</module>
          <module>limbus-event-multicaster</module>
          <module>limbus-utils</module>
          <module>limbus-logging-jdk</module>
          <module>limbus-logging-log4j</module>
          <module>limbus-jsse</module>
          <module>limbus-system</module>
          <module>limbus-task-scheduler</module>
          <module>limbus-vfs</module>
          <module>limbus-properties</module>
          <module>limbus-staging</module>
          <module>limbus-depchain-plugin</module>
          <module>limbus-depchain-host</module>
          <module>limbus-launcher</module>
          <module>limbus-system-api</module>
          <module>limbus-maven-integration</module>
     </modules>
     <build>
          <pluginManagement>
               <plugins>
                    <plugin>
                         <artifactId>maven-compiler-plugin</artifactId>
                         <version>3.8.1</version>
                    </plugin>
                    <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-source-plugin</artifactId>
                         <version>3.0.1</version>
                         <executions>
                              <execution>
                                   <id>attach-sources</id>
                                   <goals>
                                        <goal>jar</goal>
                                   </goals>
                              </execution>
                         </executions>
                    </plugin>
                    <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-javadoc-plugin</artifactId>
                         <version>3.2.0</version>
                         <executions>
                              <execution>
                                   <id>attach-javadocs</id>
                                   <goals>
                                        <goal>jar</goal>
                                   </goals>
                                   <configuration>
                                        <failOnError>false</failOnError>
                                        <additionalparam>${javadoc.opts}</additionalparam>
                                        <additionalJOption>-Xdoclint:none</additionalJOption>
                                   </configuration>
                              </execution>
                         </executions>
                    </plugin>
                    <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-jar-plugin</artifactId>
                         <version>3.2.0</version>
                         <configuration>
                              <archive>
                                   <manifest>
                                        <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                                        <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                                   </manifest>
                              </archive>
                         </configuration>
                    </plugin>
                    <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-gpg-plugin</artifactId>
                         <version>3.0.1</version>
                    </plugin>
                    <plugin>
                         <groupId>org.eclipse.m2e</groupId>
                         <artifactId>lifecycle-mapping</artifactId>
                         <version>1.0.0</version>
                         <configuration>
                              <lifecycleMappingMetadata>
                                   <pluginExecutions>
                                        <pluginExecution>
                                             <pluginExecutionFilter>
                                                  <groupId>net.revelc.code.formatter</groupId>
                                                  <artifactId>formatter-maven-plugin</artifactId>
                                                  <versionRange>[1.0.0,)</versionRange>
                                                  <goals>
                                                       <goal>validate</goal>
                                                  </goals>
                                             </pluginExecutionFilter>
                                             <action>
                                                  <ignore />
                                             </action>
                                        </pluginExecution>
                                   </pluginExecutions>
                              </lifecycleMappingMetadata>
                         </configuration>
                    </plugin>
               </plugins>
          </pluginManagement>
          <resources>
               <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
               </resource>
          </resources>
          <plugins>
               <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-jar-plugin</artifactId>
               </plugin>
               <plugin>
                    <groupId>net.revelc.code.formatter</groupId>
                    <artifactId>formatter-maven-plugin</artifactId>
                    <version>2.10.0</version>
                    <executions>
                         <execution>
                              <phase>validate</phase>
                              <goals>
                                   <goal>validate</goal>
                              </goals>
                         </execution>
                    </executions>
                    <configuration>
                         <lineEnding>LF</lineEnding>
                         <configFile>${sharedDirectory}/shared/formatter.xml</configFile>
                    </configuration>
               </plugin>
               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.0.0-M4</version>
               </plugin>
               <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-report-plugin</artifactId>
                    <version>3.0.0-M4</version>
               </plugin>
          </plugins>
     </build>

     <dependencyManagement>
          <dependencies>
               <!-- Logging Facade -->
               <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                    <version>${limbus.slf4j.version}</version>
                    <scope>provided</scope>
               </dependency>
               <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-jdk14</artifactId>
                    <version>${limbus.slf4j.version}</version>
                    <scope>provided</scope>
               </dependency>
               <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${limbus.slf4j.version}</version>
                    <scope>provided</scope>
               </dependency>
               <!-- Test Environment -->
               <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter</artifactId>
                    <version>5.7.0-M1</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                    <version>5.7.0-M1</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-core</artifactId>
                    <version>3.3.3</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-junit-jupiter</artifactId>
                    <version>3.3.3</version>
                    <scope>test</scope>
               </dependency>
               <dependency>
                    <groupId>org.assertj</groupId>
                    <artifactId>assertj-core</artifactId>
                    <version>3.16.0</version>
                    <scope>test</scope>
               </dependency>
          </dependencies>
     </dependencyManagement>

     <dependencies>
          <!-- Test Environment -->
          <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.assertj</groupId>
               <artifactId>assertj-core</artifactId>
               <scope>test</scope>
          </dependency>
     </dependencies>
</project>