<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.apache.olingo</groupId>
  <artifactId>odata-parent</artifactId>
  <version>4.10.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>Olingo-OData</name>

  <inceptionYear>2013</inceptionYear>

  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>24</version>
  </parent>

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

  <url>http://olingo.apache.org</url>

  <scm>
    <connection>scm:git:git://gitbox.apache.org/repos/asf/olingo-odata4.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/olingo-odata4.git</developerConnection>
    <url>https://gitbox.apache.org/repos/asf?p=olingo-odata4.git</url>
  </scm>

  <mailingLists>
    <mailingList>
      <name>Apache Olingo Developers Mailinglist</name>
      <archive>http://mail-archives.apache.org/mod_mbox/odata-dev/</archive>
      <post>mailto:dev@olingo.apache.org</post>
      <subscribe>mailto:dev-subscribe@olingo.apache.org</subscribe>
    </mailingList>
  </mailingLists>

  <modules>
    <module>lib</module>
    <module>ext</module>
    <module>fit</module>
    <module>dist</module>
    <module>samples</module>
  </modules>

  <properties>
    <commons.codec.version>1.15</commons.codec.version>
    <commons.io.version>2.11.0</commons.io.version>
    <commons.lang3.version>3.12.0</commons.lang3.version>

    <commons.logging.version>1.2</commons.logging.version>
    <commons.vfs.version>2.0</commons.vfs.version>
    <esigate.version>4.4</esigate.version>
    <servlet.version>3.1.0</servlet.version>
    <cxf.version>3.0.16</cxf.version>
    <spring.version>4.0.9.RELEASE</spring.version>
    <netty.version>4.1.84.Final</netty.version>

    <velocity.version>1.7</velocity.version>
    <maven.plugin.api.version>3.6.1</maven.plugin.api.version>
    <maven.plugin.tools.version>3.6.1</maven.plugin.tools.version>
    <maven.bundle.plugin.version>2.5.4</maven.bundle.plugin.version>
    <hc.client.version>4.5.13</hc.client.version>
    <hc.core.version>4.4.11</hc.core.version>
    <jackson.version>2.13.3</jackson.version>
    <jackson-databind.version>2.13.3</jackson-databind.version>
    <aalto-xml.version>1.3.1</aalto-xml.version>
    <xmlunit.version>1.6</xmlunit.version>
    <mockito-all.version>1.9.5</mockito-all.version>
    <junit.version>4.13.2</junit.version>

    <android.platform.version>4.1.1.4</android.platform.version>
    <stax.api.version>1.0-2</stax.api.version>

    <sl4j.version>1.7.36</sl4j.version>

    <tomcat.servlet.port>9080</tomcat.servlet.port>
    <tomcat.version>7.0.109</tomcat.version>

    <!-- for osgi integration testing -->
    <osgi.version>4.2.0</osgi.version>
    <karaf.version>3.0.3</karaf.version>
    <pax.exam.version>3.4.0</pax.exam.version>

    <!-- Project build settings -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.source>8</project.build.source>
    <project.build.outputTimestamp>${maven.build.timestamp}</project.build.outputTimestamp>
    <olingo.deploy.skip>true</olingo.deploy.skip>

    <!-- Setting needed for Java 8 release builds -->
    <additionalparam>-Xdoclint:none</additionalparam>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec-http</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons.codec.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons.io.version}</version>
      </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>provided</scope>
      </dependency>

      <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <version>${maven.bundle.plugin.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${hc.client.version}</version>
      </dependency>

      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-databind.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.jaxrs</groupId>
        <artifactId>jackson-jaxrs-json-provider</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml</groupId>
        <artifactId>aalto-xml</artifactId>
        <version>${aalto-xml.version}</version>
      </dependency>

      <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>android</artifactId>
        <version>${android.platform.version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.xml.stream</groupId>
        <artifactId>stax-api</artifactId>
        <version>${stax.api.version}</version>
      </dependency>

      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${sl4j.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-vfs2</artifactId>
        <version>${commons.vfs.version}</version>
      </dependency>
      <dependency>
        <groupId>org.esigate</groupId>
        <artifactId>esigate-core</artifactId>
        <version>${esigate.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.geronimo.specs</groupId>
        <artifactId>geronimo-javamail_1.4_spec</artifactId>
        <version>1.7.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-frontend-jaxrs</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-client</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-rs-security-oauth2</artifactId>
        <version>${cxf.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-logging-log4j</artifactId>
        <version>${tomcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper</artifactId>
        <version>${tomcat.version}</version>
      </dependency>

      <!-- Pojogen Maven Plugin depenencies -->
      <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>${velocity.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>${maven.plugin.api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>${maven.plugin.tools.version}</version>
      </dependency>
      <!-- /Pojogen Maven Plugin depenencies -->

      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito-all.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>xmlunit</groupId>
        <artifactId>xmlunit</artifactId>
        <version>${xmlunit.version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>${sl4j.version}</version>
        <scope>test</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <finalName>${project.name}-${project.version}</finalName>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.keyboardsamurais.maven</groupId>
          <artifactId>maven-timestamp-plugin</artifactId>
          <version>1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>2.7</version>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
              <goal>jar-no-fork</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version>
        <dependencies>
            <dependency>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-filtering</artifactId>
                <version>1.2</version>
            </dependency>
        </dependencies>
        <executions>
          <execution>
            <goals>
              <goal>process</goal>
            </goals>
            <configuration>
              <properties>
                <projectName>Apache Olingo</projectName>
              </properties>
              <resourceBundles>
                <resourceBundle>org.apache:apache-jar-resource-bundle:1.4</resourceBundle>
              </resourceBundles>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <webResources>
            <resource>
              <!-- this is relative to the pom.xml directory -->
              <directory>${project.build.directory}/maven-shared-archive-resources</directory>
              <includes>
                <include>META-INF/*</include>
              </includes>
            </resource>
          </webResources>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <runOrder>alphabetical</runOrder>
          <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <configuration>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <runOrder>alphabetical</runOrder>
          <encoding>${project.build.sourceEncoding}</encoding>
          <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
        </configuration>
        <executions>
          <execution>
            <id>integration-test</id>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <configuration>
          <encoding>${project.build.sourceEncoding}</encoding>
          <useDefaultDelimiters>false</useDefaultDelimiters>
          <delimiters>
            <delimiter>${*}</delimiter>
          </delimiters>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${project.build.source}</source>
          <target>${project.build.source}</target>
          <showWarnings>true</showWarnings>
          <showDeprecation>true</showDeprecation>
          <compilerArgument>-Xlint:unchecked</compilerArgument>
          <encoding>${project.build.sourceEncoding}</encoding>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.9</version>
        <configuration>
          <useProjectReferences>false</useProjectReferences>
          <addGroupIdToProjectName>true</addGroupIdToProjectName>
          <addVersionToProjectName>true</addVersionToProjectName>
          <wtpversion>2.0</wtpversion>
          <downloadSources>true</downloadSources>
          <downloadJavadocs>true</downloadJavadocs>
          <sourceExcludes>
            <excludes>
              target/**
            </excludes>
          </sourceExcludes>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <executions>
          <execution>
            <id>checkstyle</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration combine.self="override">
          <outputFileFormat>xml</outputFileFormat>
          <consoleOutput>true</consoleOutput>
          <enableRSS>false</enableRSS>
          <linkXRef>false</linkXRef>
          <configLocation>src/checkstyle/config.xml</configLocation>
          <sourceDirectories>
			<sourceDirectory>${basedir}/src</sourceDirectory>
		  </sourceDirectories>
          <encoding>${project.build.sourceEncoding}</encoding>
          <failOnViolation>true</failOnViolation>
          <violationSeverity>warning</violationSeverity>
          <!-- fit autogenerated (via pojogen plugin) resources -->
          <excludes>**/fit/proxy/staticservice/**/*.java,
            **/fit/proxy/opentype/**/*.java,
            **/fit/proxy/demo/**/*.java</excludes>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <configuration>
          <instrumentation>
            <excludes>
              <exclude>org/apache/olingo/**/sample/**/*.class</exclude>
              <exclude>org/apache/olingo/**/tecsvc/**/*.class</exclude>
              <exclude>org/apache/olingo/**/fit/**/*.class</exclude>
              <exclude>org/apache/olingo/**/testutil/**/*.class</exclude>
            </excludes>
          </instrumentation>
          <check/>
          <aggregate>true</aggregate>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.rat</groupId>
        <artifactId>apache-rat-plugin</artifactId>
        <executions>
          <execution>
            <id>rat-check</id>
            <phase>install</phase>
            <goals>
              <goal>check</goal>
            </goals>
            <configuration>
              <excludes>
                <exclude>**/target/**</exclude>
                <exclude>**/META-INF/**</exclude>
                <exclude>**/*.txt</exclude>
                <exclude>**/*.ini</exclude>
                <exclude>**/*.bin</exclude>
                <exclude>**/MANIFEST.MF</exclude>
                <exclude>.gitignore</exclude>
                <exclude>.git/**</exclude>
                <exclude>bin/**</exclude>
                <exclude>**/*.local</exclude>
                <exclude>**/*.project</exclude>
                <exclude>**/*.classpath</exclude>
                <exclude>**/*.json</exclude>
                <exclude>**/*.batch</exclude>
                <exclude>**/NOTICE</exclude>
                <exclude>**/DEPENDENCIES</exclude>
                <exclude>**/nb-configuration.xml</exclude>
                <exclude>**/.externalToolBuilders/**</exclude>
                <exclude>**/maven-eclipse.xml</exclude>
                <exclude>**/*.iml</exclude>
                <exclude>**/ref/**</exclude>
                <exclude>**/server-ref/**</exclude>
                <exclude>**/dependency-reduced-pom.xml</exclude>
                <exclude>**/.settings/**</exclude>
                <exclude>**/.github/**</exclude>
				<exclude>**/SECURITY.md</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>apache.deploy</id>
      <properties>
        <olingo.deploy.skip>false</olingo.deploy.skip>
      </properties>
    </profile>
    <profile>
      <id>apache-release</id>
      <properties>
        <olingo.deploy.skip>false</olingo.deploy.skip>
      </properties>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <configuration>
              <source>8</source>
              <!--<failOnError>false</failOnError>-->
              <additionalOptions>
                <additionalOption>-Xdoclint:none</additionalOption>
              </additionalOptions>
            </configuration>
            <executions>
              <execution>
                <id>javadoc-jar</id>
                <phase>package</phase>
                <goals>
                  <goal>aggregate-jar</goal>
                </goals>
                <configuration>
                  <excludePackageNames>
                    org.apache.olingo.commons.core:org.apache.olingo.commons.core.*:org.apache.olingo.client.core:org.apache.olingo.client.core.*:org.apache.olingo.server.core:org.apache.olingo.server.core.*:org.apache.olingo.fit:org.apache.olingo.fit.*:org.apache.olingo.server.sample:org.apache.olingo.server.sample.*:org.apache.olingo.server.tecsvc:org.apache.olingo.server.tecsvc.*
                  </excludePackageNames>
                  <additionalJOptions>
                    <additionalJOption>-quiet</additionalJOption>
                  </additionalJOptions>
                  <groups>
                    <group>
                      <title>OData Client</title>
                      <packages>org.apache.olingo.client.api:org.apache.olingo.client.api.*</packages>
                    </group>
                    <group>
                      <title>OData Client Proxy</title>
                      <packages>org.apache.olingo.ext.proxy:org.apache.olingo.ext.proxy.*</packages>
                    </group>
					          <group>
                      <title>OData Server</title>
                      <packages>org.apache.olingo.server.api:org.apache.olingo.server.api.*</packages>
                    </group>
                    <group>
                      <title>OData Commons</title>
                      <packages>org.apache.olingo.commons.api:org.apache.olingo.commons.api.*</packages>
                    </group>
                  </groups>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
