<?xml version="1.0" encoding="UTF-8"?>
<!--
 Copyright (C) 2014 - Open Source Geospatial Foundation. All rights reserved.
 This code is licensed under the GPL 2.0 license, available at the root
 application directory.
 -->
<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.geoserver</groupId>
    <artifactId>geoserver</artifactId>
    <version>C105.2.27.1.00</version>
  </parent>

  <groupId>org.geoserver</groupId>
  <artifactId>community</artifactId>
  <packaging>pom</packaging>
  <name>Community Space</name>

  <dependencies>
    <!-- Do not add any other dependency here, modules shall explicitly declare their dependencies -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-webdav</artifactId>
        <version>1.0-beta-2</version>
      </extension>
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ftp</artifactId>
        <version>1.0-beta-2</version>
      </extension>
    </extensions>
    <plugins>
      <plugin>
        <groupId>org.commonjava.maven.plugins</groupId>
        <artifactId>directory-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>directories</id>
            <phase>initialize</phase>
            <goals>
              <goal>highest-basedir</goal>
            </goals>
            <configuration>
              <property>geoserverBaseDir</property>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <archive>
            <manifest>
              <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
            </manifest>
            <manifestEntries>
              <GeoServerModule>community</GeoServerModule>
              <Application-Name>${project.build.finalname}</Application-Name>
              <Project-Version>${project.version}</Project-Version>
              <Iteration-Name>${iteration}</Iteration-Name>
              <Build-Timestamp>${maven.build.timestamp}</Build-Timestamp>
              <Git-Revision>${build.commit.id}</Git-Revision>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <!-- profiles for individual modules -->
  <profiles>
    <profile>
      <id>colormap</id>
      <modules>
        <module>colormap</module>
      </modules>
    </profile>
    <profile>
      <id>rest</id>
      <modules>
        <module>rest</module>
      </modules>
    </profile>
    <profile>
      <id>dds</id>
      <modules>
        <module>dds</module>
      </modules>
    </profile>
    <profile>
      <id>gpx</id>
      <modules>
        <module>gpxppio</module>
      </modules>
    </profile>
    <profile>
      <id>programming-guide</id>
      <modules>
        <module>programming-guide</module>
      </modules>
    </profile>
    <profile>
      <id>notification</id>
      <modules>
        <module>notification-common</module>
        <module>notification</module>
      </modules>
    </profile>
    <profile>
      <id>notification-geonode</id>
      <modules>
        <module>notification-geonode</module>
      </modules>
    </profile>
    <profile>
      <id>communityRelease</id>
      <modules>
        <module>dds</module>
        <module>jdbcconfig</module>
        <module>colormap</module>
        <module>mbtiles</module>
        <module>mbtiles-store</module>
        <module>geopkg</module>
        <!-- TODO WICKET8 - Fix this module and re-enable -->
        <!--<module>dyndimension</module>-->
        <module>flatgeobuf</module>
        <module>spatialjson</module>
        <module>webp</module>
        <module>gpxppio</module>
        <module>jms-cluster</module>
        <module>hz-cluster</module>
        <module>solr</module>
        <module>elasticsearch</module>
        <module>wps-remote</module>
        <module>jdbcstore</module>
        <module>gdal</module>
        <module>gwc-azure-blob</module>
        <module>backup-restore</module>
        <module>ncwms</module>
        <module>gwc-sqlite</module>
        <module>jwt-headers</module>
        <module>security</module>
        <module>notification</module>
        <module>notification-common</module>
        <module>notification-geonode</module>
        <module>oseo</module>
        <module>s3-geotiff</module>
        <module>netcdf-ghrsst</module>
        <module>taskmanager</module>
        <module>web-ogr</module>
        <module>ogcapi</module>
        <module>importer-jdbc</module>
        <module>features-autopopulate</module>
        <module>features-templating</module>
        <module>gsr</module>
        <module>cog</module>
        <module>cov-json</module>
        <module>smart-data-loader</module>
        <module>rest-openapi</module>
        <module>schemaless-features</module>
        <module>web-service-auth</module>
        <module>gwc-mbtiles</module>
        <module>vsi</module>
        <module>libdeflate</module>
        <module>vector-mosaic</module>
        <module>proxy-base-ext</module>
        <module>wps-longitudinal-profile</module>
        <module>monitor-kafka</module>
        <module>monitor-micrometer</module>
        <module>graticule</module>
        <module>wfs-freemarker</module>
        <module>stac-datastore</module>
        <module>acl</module>
        <module>geoparquet</module>
      </modules>
    </profile>
    <profile>
      <id>jdbcconfig</id>
      <modules>
        <module>jdbcconfig</module>
        <module>jdbcstore</module>
      </modules>
    </profile>
    <profile>
      <id>geopkg</id>
      <modules>
        <module>mbtiles</module>
        <module>geopkg</module>
      </modules>
    </profile>
    <profile>
      <id>mbtiles</id>
      <modules>
        <module>mbtiles</module>
      </modules>
    </profile>
    <profile>
      <id>mbtiles-store</id>
      <modules>
        <module>mbtiles-store</module>
      </modules>
    </profile>
    <profile>
      <id>dyndimension</id>
      <activation>
        <property>
          <name>dyndimension</name>
        </property>
      </activation>
      <modules>
        <module>dyndimension</module>
      </modules>
    </profile>
    <profile>
      <id>flatgeobuf</id>
      <modules>
        <module>flatgeobuf</module>
      </modules>
    </profile>
    <profile>
      <id>spatialjson</id>
      <modules>
        <module>spatialjson</module>
      </modules>
    </profile>
    <profile>
      <id>webp</id>
      <modules>
        <module>webp</module>
      </modules>
    </profile>
    <profile>
      <id>rest-ext</id>
      <activation>
        <property>
          <name>rest-ext</name>
        </property>
      </activation>
      <modules>
        <module>rest-ext</module>
      </modules>
    </profile>
    <profile>
      <id>solr</id>
      <modules>
        <module>solr</module>
      </modules>
    </profile>
    <profile>
      <id>elasticsearch</id>
      <modules>
        <module>elasticsearch</module>
      </modules>
    </profile>

    <profile>
      <id>rest-upload</id>
      <modules>
        <module>rest-upload</module>
      </modules>
    </profile>

    <profile>
      <id>jms-cluster</id>
      <modules>
        <module>jms-cluster</module>
      </modules>
    </profile>
    <profile>
      <id>activemq</id>
      <modules>
        <module>jms-cluster</module>
      </modules>
    </profile>
    <profile>
      <id>hz-cluster</id>
      <modules>
        <module>hz-cluster</module>
      </modules>
    </profile>
    <profile>
      <id>jdbcstore</id>
      <modules>
        <module>jdbcconfig</module>
        <module>jdbcstore</module>
      </modules>
    </profile>
    <profile>
      <id>gdal-translate</id>
      <modules>
        <module>gdal</module>
      </modules>
    </profile>
    <profile>
      <id>gwc-azure-blob</id>
      <modules>
        <module>gwc-azure-blob</module>
      </modules>
    </profile>
    <profile>
      <id>wps-remote</id>
      <modules>
        <module>wps-remote</module>
      </modules>
    </profile>
    <profile>
      <id>backup-restore</id>
      <modules>
        <module>backup-restore</module>
      </modules>
    </profile>
    <profile>
      <id>ncwms</id>
      <modules>
        <module>colormap</module>
        <module>ncwms</module>
      </modules>
    </profile>
    <profile>
      <id>gwc-sqlite</id>
      <modules>
        <module>gwc-sqlite</module>
      </modules>
    </profile>

    <profile>
      <id>jwt-headers</id>
      <modules>
        <module>jwt-headers/jwt-headers-util</module>
        <module>jwt-headers/gs-jwt-headers</module>
      </modules>
    </profile>

    <profile>
      <id>oauth2-google</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>oauth2-github</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>oauth2-geonode</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>oauth2-openid-connect</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>oauth2-all</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>keycloak</id>
      <modules>
        <module>security</module>
      </modules>
    </profile>
    <profile>
      <id>oseo</id>
      <modules>
        <module>oseo</module>
      </modules>
    </profile>
    <profile>
      <id>s3-geotiff</id>
      <modules>
        <module>s3-geotiff</module>
      </modules>
    </profile>
    <profile>
      <id>ghrsst</id>
      <modules>
        <module>netcdf-ghrsst</module>
      </modules>
    </profile>
    <profile>
      <id>cog</id>
      <modules>
        <module>cog</module>
      </modules>
    </profile>
    <profile>
      <id>cov-json</id>
      <modules>
        <module>cov-json</module>
      </modules>
    </profile>
    <profile>
      <id>taskmanager</id>
      <modules>
        <module>taskmanager</module>
      </modules>
    </profile>
    <profile>
      <id>taskmanager-s3</id>
      <modules>
        <module>taskmanager</module>
      </modules>
    </profile>
    <profile>
      <id>taskmanager-metadata</id>
      <modules>
        <module>taskmanager</module>
      </modules>
    </profile>
    <profile>
      <id>monitor-kafka</id>
      <modules>
        <module>monitor-kafka</module>
      </modules>
    </profile>
    <profile>
      <id>monitor-micrometer</id>
      <modules>
        <module>monitor-micrometer</module>
      </modules>
    </profile>
    <profile>
      <id>web-ogr</id>
      <modules>
        <module>web-ogr</module>
      </modules>
    </profile>
    <profile>
      <id>ogcapi</id>
      <modules>
        <module>ogcapi</module>
      </modules>
    </profile>
    <profile>
      <id>importer-jdbc</id>
      <modules>
        <module>importer-jdbc</module>
      </modules>
    </profile>
    <profile>
      <id>features-autopopulate</id>
      <modules>
        <module>features-autopopulate</module>
      </modules>
    </profile>
    <profile>
      <id>features-templating</id>
      <modules>
        <module>features-templating</module>
      </modules>
    </profile>
    <profile>
      <id>gsr</id>
      <modules>
        <module>gsr</module>
      </modules>
    </profile>
    <profile>
      <id>smart-data-loader</id>
      <modules>
        <module>smart-data-loader</module>
      </modules>
    </profile>
    <profile>
      <id>rest-openapi</id>
      <modules>
        <module>rest-openapi</module>
      </modules>
    </profile>
    <profile>
      <id>schemaless-features</id>
      <modules>
        <module>schemaless-features</module>
      </modules>
    </profile>
    <profile>
      <id>web-service-auth</id>
      <modules>
        <module>web-service-auth</module>
      </modules>
    </profile>
    <profile>
      <id>gwc-mbtiles</id>
      <modules>
        <module>gwc-mbtiles</module>
      </modules>
    </profile>
    <profile>
      <id>vsi</id>
      <modules>
        <module>vsi</module>
      </modules>
    </profile>
    <profile>
      <id>libdeflate</id>
      <modules>
        <module>libdeflate</module>
      </modules>
    </profile>
    <profile>
      <id>vector-mosaic</id>
      <modules>
        <module>vector-mosaic</module>
      </modules>
    </profile>
    <profile>
      <id>acl</id>
      <modules>
        <module>acl</module>
      </modules>
    </profile>
    <profile>
      <id>proxy-base-ext</id>
      <modules>
        <module>proxy-base-ext</module>
      </modules>
    </profile>
    <profile>
      <id>wps-longitudinal-profile</id>
      <modules>
        <module>wps-longitudinal-profile</module>
      </modules>
    </profile>
    <profile>
      <id>graticule</id>
      <modules>
        <module>graticule</module>
      </modules>
    </profile>
    <profile>
      <id>wfs-freemarker</id>
      <modules>
        <module>wfs-freemarker</module>
      </modules>
    </profile>
    <profile>
      <id>geoparquet</id>
      <modules>
        <module>geoparquet</module>
      </modules>
    </profile>
    <profile>
      <id>assembly</id>
      <build>
        <plugins>
          <!-- Check if an assembly file is available in the current module, will skip otherwise -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>check-assembly-file</id>
                <phase>initialize</phase>
                <goals>
                  <goal>run</goal>
                </goals>
                <configuration>
                  <exportAntProperties>true</exportAntProperties>
                  <target>
                    <condition property="skipAssembly" value="true">
                      <not>
                        <available file="src/assembly/assembly.xml"></available>
                      </not>
                    </condition>
                  </target>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Copy dependencies of the current module -->
          <plugin>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
              <execution>
                <phase>install</phase>
                <goals>
                  <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                  <skip>${skipAssembly}</skip>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <!-- Run assembly based on collected dependencies-->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
              <execution>
                <phase>install</phase>
                <goals>
                  <goal>single</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <descriptors>
                <descriptor>${project.basedir}/src/assembly/assembly.xml</descriptor>
              </descriptors>
              <outputDirectory>${geoserverBaseDir}/community/target/release</outputDirectory>
              <skipAssembly>${skipAssembly}</skipAssembly>
              <finalName>geoserver-${project.version}</finalName>
            </configuration>
          </plugin>
          <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <executions>
              <execution>
                <id>copy-resources</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>copy-resources</goal>
                </goals>
                <configuration>
                  <outputDirectory>${project.build.directory}/html-template</outputDirectory>
                  <resources>
                    <resource>
                      <directory>../release/src/markdown/html</directory>
                      <filtering>true</filtering>
                    </resource>
                  </resources>
                </configuration>
              </execution>
            </executions>
            <inherited>false</inherited>
          </plugin>
          <plugin>
            <groupId>com.ruleoftech</groupId>
            <artifactId>markdown-page-generator-plugin</artifactId>
            <executions>
              <execution>
                <id>licenses</id>
                <phase>process-resources</phase>
                <goals>
                  <goal>generate</goal>
                </goals>
                <configuration>
                  <inputDirectory>${project.basedir}/../../licenses</inputDirectory>
                  <outputDirectory>${project.build.directory}/html/licenses</outputDirectory>
                </configuration>
              </execution>
            </executions>
            <inherited>false</inherited>
            <configuration>
              <recursiveInput>false</recursiveInput>
              <transformRelativeMarkdownLinks>true</transformRelativeMarkdownLinks>
              <headerHtmlFile>${project.build.directory}/html-template/header.html</headerHtmlFile>
              <footerHtmlFile>${project.build.directory}/html-template/footer.html</footerHtmlFile>
              <pegdownExtensions>TABLES,FENCED_CODE_BLOCKS,AUTOLINKS,FORCELISTITEMPARA</pegdownExtensions>
              <defaultTitle>true</defaultTitle>
              <inputFileExtensions>md,txt</inputFileExtensions>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>

</project>
