<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~  http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.apache.archiva</groupId>
    <artifactId>archiva-parent</artifactId>
    <version>19-SNAPSHOT</version>
  </parent>

  <groupId>org.apache.archiva.components</groupId>
  <artifactId>archiva-components</artifactId>
  <version>3.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Archiva Components :: Parent</name>

  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/archiva-components.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/archiva-components.git</developerConnection>
    <url>https://github.com/apache/archiva-components</url>
    <tag>HEAD</tag>
  </scm>

  <distributionManagement>
    <site>
      <id>apache.website</id>
      <url>${siteRepositoryUrl}</url>
    </site>
  </distributionManagement>


  <properties>
    <site.staging.base>${project.basedir}/target/staging/components</site.staging.base>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <webUrl>https://archiva.apache.org/components</webUrl>

    <!-- The git repository, where the site content is placed -->
    <siteRepositoryUrl>scm:git:https://gitbox.apache.org/repos/asf/archiva-web-content.git</siteRepositoryUrl>
    <site.staging.base>${project.basedir}</site.staging.base>

    <scmPubCheckoutDirectory>.site-content</scmPubCheckoutDirectory>
    <scmPublishBranch>asf-staging</scmPublishBranch>
    <scmPublishPath>/components</scmPublishPath>


    <slf4j.version>1.7.32</slf4j.version>
    <log4j.version>2.17.2</log4j.version>
    <spring.version>5.3.20</spring.version>
    <ehcache.version>3.9.9</ehcache.version>
    <io.swagger.version>2.1.10</io.swagger.version>

    <jakarta.inject.version>1.0</jakarta.inject.version>
    <jakarta.annotation.version>1.3.5</jakarta.annotation.version>
    <jakarta.ws.rs.version>2.1.6</jakarta.ws.rs.version>

    <!-- apache commons -->
    <commons.lang3.version>3.12.0</commons.lang3.version>
    <commons.beanutils.version>1.9.4</commons.beanutils.version>
    <commons.configuration.version>2.7</commons.configuration.version>
    <commons.text.version>1.9</commons.text.version>
    <commons.logging.version>1.2</commons.logging.version>
    <commons.collections.3.version>3.2.2</commons.collections.3.version>

    <apacheds.version>1.5.1</apacheds.version>
    <apacheds.shared.version>0.9.7</apacheds.shared.version>

    <!-- junit -->
    <junit.platform.version>1.8.2</junit.platform.version>
    <junit.jupiter.version>5.8.2</junit.jupiter.version>

  </properties>

  <description>Parent Pom for various components used in Apache Archiva and Redback.</description>

  <modules>
    <module>expression-evaluator</module>
    <module>spring-apacheds</module>
    <module>graph</module>
    <module>spring-registry</module>
    <module>spring-cache</module>
    <module>spring-taskqueue</module>
    <module>spring-quartz</module>
    <module>rest-util</module>
  </modules>

  <repositories>
    <repository>
      <id>archiva-repository.releases</id>
      <url>https://archiva-repository.apache.org/archiva/repository/archiva-releases/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>archiva.snapshots</id>
      <name>Archiva VM Snapshots Repository</name>
      <url>https://archiva-repository.apache.org/archiva/repository/snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>apache.snapshots</id>
      <name>Apache Snapshots</name>
      <url>https://repository.apache.org/content/groups/snapshots/</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jcl</artifactId>
        <version>${log4j.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
        <scope>test</scope>
      </dependency>
      <!-- spring -->
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
      </dependency>


      <dependency>
        <groupId>jakarta.inject</groupId>
        <artifactId>jakarta.inject-api</artifactId>
        <version>${jakarta.inject.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>${jakarta.annotation.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>jakarta.ws.rs</groupId>
        <artifactId>jakarta.ws.rs-api</artifactId>
        <version>${jakarta.ws.rs.version}</version>
        <scope>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons.lang3.version}</version>
      </dependency>

      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${commons.logging.version}</version>
        <scope>test</scope>
      </dependency>

      <!-- JUNIT 5 -->
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-console-standalone</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit.jupiter.version}</version>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-core</artifactId>
        <version>${io.swagger.version}</version>
      </dependency>
      <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-annotations</artifactId>
        <version>${io.swagger.version}</version>
      </dependency>

    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <version>${log4j.version}</version>
      <scope>test</scope>
    </dependency>

    <!-- JUNIT 5 -->
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-launcher</artifactId>
      <version>${junit.platform.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.platform</groupId>
      <artifactId>junit-platform-console-standalone</artifactId>
      <version>${junit.platform.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-engine</artifactId>
      <version>${junit.jupiter.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.vintage</groupId>
      <artifactId>junit-vintage-engine</artifactId>
      <version>${junit.jupiter.version}</version>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <useReleaseProfile>false</useReleaseProfile>
            <arguments>-Prelease</arguments>
            <goals>clean deploy</goals>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <configuration>
            <skipDeploy>true</skipDeploy>
          </configuration>
          <dependencies>
            <dependency>
              <groupId>org.asciidoctor</groupId>
              <artifactId>asciidoctor-maven-plugin</artifactId>
              <version>${asciidoctor.maven.plugin.version}</version>
            </dependency>
          </dependencies>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${javadocPluginVersion}</version>
          <configuration>
            <notimestamp>true</notimestamp>
            <javadocVersion>${javaFullVersion}</javadocVersion>
            <source>${compiler.source}</source>
            <doclint>none</doclint>
            <detectLinks>true</detectLinks>
            <detectJavaApiLink>true</detectJavaApiLink>
            <linksource>true</linksource>
            <show>protected</show>
            <quiet>true</quiet>
            <isOffline>false</isOffline>
            <excludePackageNames>org.apache.archiva.components.*.test</excludePackageNames>
            <links>
              <link>https://junit.org/junit5/docs/current/api</link>
              <link>http://www.quartz-scheduler.org/api/2.3.0</link>
              <link>https://docs.spring.io/autorepo/docs/spring/${spring.version}.RELEASE/javadoc-api</link>
            </links>
            <tags>
              <tag>
                <name>todo</name>
                <placement>a</placement>
                <head>To Do:</head>
              </tag>
            </tags>
          </configuration>
        </plugin>

      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>.gitignore</exclude>
            <exclude>DEPENDENCIES</exclude>
            <exclude>README.*</exclude>
            <exclude>*.sh</exclude>
            <!-- exclude IntelliJ Idea files -->
            <exclude>.idea/**</exclude>
            <!-- exclude Eclipse files -->
            <exclude>.project</exclude>
            <exclude>.classpath</exclude>
            <exclude>.settings</exclude>
            <exclude>.java-version</exclude>
            <exclude>**/.site-content/**</exclude>
            <exclude>**/.repository/**</exclude>
            <exclude>git-sparse-checkout-pattern</exclude>
            <exclude>**/target/**</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>.editorconfig</exclude>
            <exclude>.asf.yaml</exclude>
          </excludes>
        </configuration>
        <executions>
          <execution>
            <id>rat-check</id>
            <goals>
              <goal>check</goal>
            </goals>
            <phase>verify</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-scm-publish-plugin</artifactId>
        <inherited>false</inherited>
        <configuration>
          <checkinComment>Apache Archiva Component docs for ${project.version}</checkinComment>
          <skipDeletedFiles>true</skipDeletedFiles>
          <content>${project.build.directory}/staging</content>
          <tryUpdate>true</tryUpdate>
          <scmBranch>${scmPublishBranch}</scmBranch>
          <!--
                    <ignorePathsToDelete>
                      <path>%regex[^(?!docs/).*$]</path>
                    </ignorePathsToDelete>
          -->
        </configuration>
        <executions>
          <execution>
            <id>scm-publish</id>
            <phase>site-deploy</phase>
            <goals>
              <goal>publish-scm</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>
        <version>3.12.0</version>
        <configuration>
          <!-- disable generateReports if you don't want to include the built-in reports -->
          <generateReports>true</generateReports>
          <generateSitemap>true</generateSitemap>
          <relativizeDecorationLinks>false</relativizeDecorationLinks>
          <locales>en</locales>
          <inputEncoding>UTF-8</inputEncoding>
          <outputEncoding>UTF-8</outputEncoding>
          <skipDeploy>true</skipDeploy>
          <stagingDirectory>${site.staging.base}/target/staging${scmPublishPath}</stagingDirectory>
          <asciidoc>
            <!-- optional site-wide AsciiDoc attributes -->
            <attributes>
              <icons>font</icons>
              <source-highlighter>coderay</source-highlighter>
              <coderay-css>style</coderay-css>
              <toclevels>2</toclevels>
            </attributes>
          </asciidoc>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctor-maven-plugin</artifactId>
            <version>${asciidoctor.maven.plugin.version}</version>
          </dependency>
        </dependencies>
      </plugin>


    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-project-info-reports-plugin</artifactId>
        <version>${maven-project-info-reports-plugin.version}</version>
        <reportSets>
          <reportSet>
            <reports>
              <report>index</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
        <version>${javadocPluginVersion}</version>
        <inherited>false</inherited>
        <configuration>
          <notimestamp>true</notimestamp>
          <javadocVersion>${javaFullVersion}</javadocVersion>
          <source>${compiler.source}</source>
          <doclint>none</doclint>
          <detectLinks>true</detectLinks>
          <detectJavaApiLink>true</detectJavaApiLink>
          <linksource>true</linksource>
          <show>protected</show>
          <quiet>true</quiet>
          <doctitle>Archiva Components API</doctitle>
          <isOffline>false</isOffline>
          <excludePackageNames>org.apache.archiva.components.*.test</excludePackageNames>
          <links>
            <link>https://junit.org/junit5/docs/current/api</link>
            <link>http://www.quartz-scheduler.org/api/2.3.0</link>
            <link>https://docs.spring.io/autorepo/docs/spring/${spring.version}.RELEASE/javadoc-api</link>
          </links>
          <tags>
          <tag>
              <name>todo</name>
              <placement>a</placement>
              <head>To Do:</head>
            </tag>
          </tags>
        </configuration>
        <reportSets>
          <reportSet>
            <id>aggregate</id>
            <reports>
              <report>aggregate</report>
            </reports>
          </reportSet>
        </reportSets>
      </plugin>
    </plugins>
  </reporting>


  <profiles>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
              <execution>
                <id>source-release-assembly</id>
                <phase>package</phase>
                <goals>
                  <goal>single</goal>
                </goals>
                <configuration>
                  <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                  <descriptorRefs>
                    <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>
                  </descriptorRefs>
                  <tarLongFileMode>gnu</tarLongFileMode>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!--
This runs a sparse git checkout for the web site content repository that contains only the doc directory.
The profile is activated only, if the checkout directory does not exist.
The executor runs a shell script.
-->
    <profile>
      <id>site-checkout</id>
      <activation>
        <file>
          <missing>${scmPubCheckoutDirectory}</missing>
        </file>
        <os>
          <family>unix</family>
        </os>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.0.0</version>
            <inherited>false</inherited>
            <executions>
              <execution>
                <id>prepare-checkout</id>
                <phase>pre-site</phase>
                <goals>
                  <goal>exec</goal>
                </goals>
                <configuration>
                  <executable>checkoutSite.sh</executable>
                  <workingDirectory>${project.basedir}</workingDirectory>
                  <arguments>
                    <argument>-d</argument>
                    <argument>${scmPubCheckoutDirectory}</argument>
                    <argument>-b</argument>
                    <argument>${scmPublishBranch}</argument>
                    <argument>${siteRepositoryUrl}</argument>
                  </arguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
