<?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>

    <name>SAP S/4HANA Cloud SDK</name>
    <description>Parent POM of the SAP S/4HANA Cloud SDK.</description>

    <groupId>com.sap.cloud.s4hana</groupId>
    <artifactId>sdk</artifactId>
    <version>0.0.9</version>
    <packaging>pom</packaging>

    <url>https://www.sap.com/s4sdk</url>

    <organization>
        <name>SAP SE</name>
        <url>https://www.sap.com</url>
    </organization>

    <licenses>
        <license>
            <name>SAP DEVELOPER LICENSE AGREEMENT</name>
            <url>https://tools.hana.ondemand.com/developer-license-3_1.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <name>SAP</name>
            <email>s4sdk@sap.com</email>
            <organization>SAP SE</organization>
            <organizationUrl>https://www.sap.com</organizationUrl>
        </developer>
    </developers>

    <scm>
        <connection/>
        <url/>
    </scm>

    <properties>
        <java.version>1.7</java.version>
        <java.compilerArgument/>
        <java.failOnWarning>true</java.failOnWarning>

        <javadoc.opts/>

        <project.rootdir>${project.basedir}</project.rootdir>

        <project.build.resourceEncoding>UTF-8</project.build.resourceEncoding>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <project.build.generated-sources>${project.build.directory}/generated-sources/java</project.build.generated-sources>
        <project.build.javaCodeFormatter>${project.rootdir}/codestyle/java_formatter.xml</project.build.javaCodeFormatter>

        <surefire.skipTests>false</surefire.skipTests>
        <surefire.forkCount>1</surefire.forkCount>
        <surefire.argLine/>
        <surefire.exclude/>
        <surefire.groups/>
        <surefire.excludedGroups/>
        <surefire.maxMemorySize>1024m</surefire.maxMemorySize>
        <surefire.maxPermSize>512m</surefire.maxPermSize>
        <surefire.defaultLogLevel>warn</surefire.defaultLogLevel>
        <surefire.dbMigrateChangeset>2147483647</surefire.dbMigrateChangeset>

        <!-- quality assurance -->
        <jacoco.destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</jacoco.destFile>
        <jacoco.outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</jacoco.outputDirectory>

        <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
        <sonar.jacoco.reportPath>${jacoco.destFile}</sonar.jacoco.reportPath>
        <sonar.language>java</sonar.language>
        <sonar.javascript.jslint.reportPath>${project.build.directory}/jslint.xml</sonar.javascript.jslint.reportPath>
        <sonar.exclusions>**/generated**,**/com/sap/gw/**</sonar.exclusions>

        <proxy.host>proxy.wdf.sap.corp</proxy.host>
        <proxy.port>8080</proxy.port>

        <test.systems>${project.rootdir}/systems</test.systems>
        <test.credentials>${project.rootdir}/credentials</test.credentials>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.sap.cloud.s4hana</groupId>
                <artifactId>sdk-bom</artifactId>
                <version>0.0.9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>

            <!-- include README in all jar files -->
            <resource>
                <directory>${project.rootdir}</directory>
                <includes>
                    <include>README</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>1.4.1</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <requireMavenVersion>
                                        <version>3.0.1</version>
                                    </requireMavenVersion>
                                    <requireJavaVersion>
                                        <version>${java.version}</version>
                                    </requireJavaVersion>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
                    <artifactId>maven-java-formatter-plugin</artifactId>
                    <version>0.4</version>
                    <executions>
                        <execution>
                            <id>format-java-sources</id>
                            <phase>process-sources</phase>
                            <goals>
                                <goal>format</goal>
                            </goals>
                            <configuration>
                                <configFile>${project.build.javaCodeFormatter}</configFile>
                                <encoding>${project.build.sourceEncoding}</encoding>
                                <directories>
                                    <directory>${project.basedir}/src/main</directory>
                                    <directory>${project.basedir}/src/test</directory>
                                </directories>
                            </configuration>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.eclipse.text</groupId>
                            <artifactId>org.eclipse.text</artifactId>
                            <version>3.5.101</version>
                        </dependency>
                        <dependency>
                            <groupId>org.eclipse.tycho</groupId>
                            <artifactId>org.eclipse.jdt.core</artifactId>
                            <version>3.10.0.v20140604-1726</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>com.sap.finance.cloud.plugins</groupId>
                    <artifactId>xml-whitespace-plugin</artifactId>
                    <version>1.1.3</version>
                    <executions>
                        <execution>
                            <phase>process-sources</phase>
                            <goals>
                                <goal>format</goal>
                            </goals>
                            <configuration>
                                <directory>${project.basedir}/src/</directory>
                                <indentationSize>4</indentationSize>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                    <configuration>
                        <fork>false</fork>
                        <compilerVersion>${java.version}</compilerVersion>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                        <compilerArgument>${java.compilerArgument}</compilerArgument>
                        <showWarnings>true</showWarnings>
                        <showDeprecation>true</showDeprecation>
                        <failOnWarning>${java.failOnWarning}</failOnWarning>
                        <compilerArgs>
                            <arg>-Xlint:all</arg>
                            <arg>-Xlint:-processing</arg>
                        </compilerArgs>
                        <compilerArguments>
                            <bootclasspath>${java.home}/lib/rt.jar</bootclasspath>
                        </compilerArguments>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-plugin-plugin</artifactId>
                    <version>3.2</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>versions-maven-plugin</artifactId>
                    <version>2.3</version>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.12</version>
                    <executions>
                        <execution>
                            <id>remove-old-artifacts</id>
                            <phase>package</phase>
                            <goals>
                                <goal>remove-project-artifact</goal>
                            </goals>
                            <configuration>
                                <removeAll>true</removeAll>
                                <failOnError>false</failOnError>
                            </configuration>
                        </execution>
                        <execution>
                            <id>add-source</id>
                            <phase>generate-sources</phase>
                            <goals>
                                <goal>add-source</goal>
                            </goals>
                            <configuration>
                                <sources>
                                    <source>${project.build.generated-sources}</source>
                                </sources>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.7.5.201505241946</version>
                    <configuration>
                        <destFile>${jacoco.destFile}</destFile>
                        <dataFile>${jacoco.destFile}</dataFile>
                    </configuration>
                    <executions>
                        <execution>
                            <id>agent-for-ut</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                            <configuration>
                                <append>true</append>
                                <destFile>${jacoco.destFile}</destFile>
                            </configuration>
                        </execution>
                        <execution>
                            <id>pre-unit-test</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>post-unit-test</id>
                            <phase>test</phase>
                            <goals>
                                <goal>report</goal>
                            </goals>
                            <configuration>
                                <outputDirectory>${jacoco.outputDirectory}</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20</version>
                    <configuration>
                        <argLine>@{argLine}
                            -Xmx${surefire.maxMemorySize}
                            -XX:MaxPermSize=${surefire.maxPermSize}
                            -Dorg.slf4j.simpleLogger.defaultLogLevel=${surefire.defaultLogLevel}
                            -Ddb.migrate.changeset=${surefire.dbMigrateChangeset}
                            -Djava.io.tmpdir=target/arquillian-working-dir/${surefire.forkNumber}/
                        </argLine>
                        <skipTests>${surefire.skipTests}</skipTests>
                        <excludes>
                            <exclude>${surefire.exclude}</exclude>
                        </excludes>
                        <forkCount>${surefire.forkCount}</forkCount>
                        <reuseForks>false</reuseForks>
                        <groups>${surefire.groups}</groups>
                        <excludedGroups>${surefire.excludedGroups}</excludedGroups>
                        <systemPropertyVariables>
                            <test.systems>${test.systems}</test.systems>
                            <test.credentials>${test.credentials}</test.credentials>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>2.17</version>
                    <configuration>
                        <outputFileFormat>xml</outputFileFormat>
                        <consoleOutput>false</consoleOutput>
                        <enableRSS>false</enableRSS>
                        <linkXRef>false</linkXRef>
                        <configLocation>http://nexus.wdf.sap.corp:8081/nexus/content/repositories/build.releases/com/sap/ldi/qi/SAPDefaultProfile/1.4.6/SAPDefaultProfile-1.4.6-checkstyle.xml</configLocation>
                        <sourceDirectory>${project.basedir}/src</sourceDirectory>
                        <encoding>${project.build.sourceEncoding}</encoding>
                        <failOnViolation>true</failOnViolation>
                        <violationSeverity>error</violationSeverity>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>3.0.3</version>
                    <configuration>
                        <includeFilterFile>http://nexus.wdf.sap.corp:8081/nexus/content/repositories/build.releases/com/sap/ldi/qi/SAPDefaultProfile/1.4.6/SAPDefaultProfile-1.4.6-findbugs.xml</includeFilterFile>
                        <findbugsXmlOutput>true</findbugsXmlOutput>
                        <xmlOutput>true</xmlOutput>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-pmd-plugin</artifactId>
                    <version>3.6</version>
                    <configuration>
                        <rulesets>
                            <ruleset>http://nexus.wdf.sap.corp:8081/nexus/content/repositories/build.releases/com/sap/ldi/qi/SAPDefaultProfile/1.4.6/SAPDefaultProfile-1.4.6-pmd.xml</ruleset>
                        </rulesets>
                        <targetJdk>${java.version}</targetJdk>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.sonarsource.scanner.maven</groupId>
                    <artifactId>sonar-maven-plugin</artifactId>
                    <version>3.2</version>
                </plugin>

                <plugin>
                    <groupId>com.sap.ldi</groupId>
                    <artifactId>fortify-plugin</artifactId>
                    <version>1.7.0</version>
                    <executions>
                        <execution>
                            <phase>none</phase>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>2.10.4</version>
                    <configuration>
                        <quiet>true</quiet>
                        <additionalparam>${javadoc.opts}</additionalparam>
                        <show>public</show>
                        <groups>
                            <group>
                                <title>S/4HANA</title>
                                <packages>com.sap.cloud.sdk.s4hana*</packages>
                            </group>
                            <group>
                                <title>Cloud Platform</title>
                                <packages>com.sap.cloud.sdk.cloudplatform*</packages>
                            </group>
                            <group>
                                <title>Frameworks</title>
                                <packages>com.sap.cloud.sdk.frameworks*</packages>
                            </group>
                        </groups>
                        <excludePackageNames>com.sap.cloud.sdk.s4hana.connectivity.sql*,
                            com.sap.cloud.sdk.s4hana.connectivity.userprofile*,
                            com.sap.cloud.sdk.s4hana.connectivity.hierarchy*,
                            com.sap.cloud.sdk.s4hana.connectivity.plainstring*,
                            com.sap.cloud.sdk.s4hana.connectivity.signing*,
                            com.sap.cloud.sdk.s4hana.authorizations*,
                            com.sap.cloud.sdk.s4hana.tables*,
                            com.sap.cloud.sdk.s4hana.serialization.jooq*,
                            com.sap.cloud.sdk.plugins*
                        </excludePackageNames>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </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>com.sap.cloud.servicesdk.plugins</groupId>
                    <artifactId>scp-neo-maven-plugin</artifactId>
                    <version>${project.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
                <artifactId>maven-java-formatter-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>com.sap.finance.cloud.plugins</groupId>
                <artifactId>xml-whitespace-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>versions-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-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-javadoc-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>disable-doclint-java8</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <javadoc.opts>-Xdoclint:none</javadoc.opts>
            </properties>
        </profile>

        <profile>
            <!-- Profile for adjustments when distributing to external non-SAP audience. -->
            <id>audience-everyone</id>
            <activation>
                <property>
                    <name>audience</name>
                    <value>everyone</value>
                </property>
            </activation>
            <build>
                <pluginManagement>
                    <plugins>
                        <!-- Remove sources for non-SAP audience. Keeping .jar files is required for deployment. -->
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-source-plugin</artifactId>
                            <configuration>
                                <forceCreation>true</forceCreation>
                                <excludes>
                                    <exclude>**/com/**</exclude>
                                    <exclude>**/org/**</exclude>
                                </excludes>
                                <archive>
                                    <manifestEntries>
                                        <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                                        <Bundle-Name>${project.artifactId}</Bundle-Name>
                                        <Bundle-SymbolicName>${project.artifactId}.source</Bundle-SymbolicName>
                                        <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                                    </manifestEntries>
                                </archive>
                            </configuration>
                        </plugin>
                    </plugins>
                </pluginManagement>
            </build>
        </profile>
    </profiles>

    <modules>
        <module>bom</module>

        <module>cloudplatform</module>
        <module>frameworks</module>
        <module>fluent-result</module>
        <module>odatav2-connectivity</module>
        <module>s4hana</module>

        <module>starters</module>
        <module>archetypes</module>

        <module>plugins/scp-neo-maven-plugin</module>
    </modules>
</project>
