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

  <parent>
    <!-- That parent extends the org.jboss:jboss-parent -->
    <groupId>org.jboss.integration-platform</groupId>
    <artifactId>jboss-integration-platform-parent</artifactId>
    <!-- Keep in sync with property <version.org.jboss.integration-platform> in dashbuilder-deps -->
    <version>6.0.8.Final</version>
  </parent>

  <groupId>org.dashbuilder</groupId>
  <artifactId>dashbuilder-parent-metadata</artifactId>
  <version>0.5.0.Final</version>
  <packaging>pom</packaging>

  <name>Dashbuilder Project</name>
  <inceptionYear>2014</inceptionYear>
  <organization>
    <name>JBoss by Red Hat</name>
    <url>http://www.jboss.org/</url>
  </organization>
  <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>

  <properties>
    <!-- Make OSGi happy -->
    <osgi.snapshot.qualifier>${maven.build.timestamp}</osgi.snapshot.qualifier>
    <!-- Using origin-repository.jboss.org as that is the canonical URL for deployment. repository.jboss.org is just a proxy
         which should delegate the calls to origin-repository.jboss.org, but that is often buggy. Using the canonical URL
         directly should help to avoid some of the issues with deploying artifacts. -->
    <jboss.releases.repo.url>https://origin-repository.jboss.org/nexus/service/local/staging/deploy/maven2/</jboss.releases.repo.url>
    <jboss.snapshots.repo.url>https://origin-repository.jboss.org/nexus/content/repositories/snapshots/</jboss.snapshots.repo.url>
    <!-- Used by maven-enforcer-plugin -->
    <!-- IMPORTANT: JDK8 is needed to build the projects (to support also WildFly 10), but we still do support JDK6/JDK7 for all backend modules. -->
    <jdk.min.version>1.8</jdk.min.version>
  </properties>

  <scm>
    <connection>scm:git:git@github.com:dashbuilder/dashbuilder.git</connection>
    <developerConnection>scm:git:git@github.com:dashbuilder/dashbuilder.git</developerConnection>
    <url>https://github.com/dashbuilder/dashbuilder</url>
  </scm>

  <modules>
    <module>dashbuilder-bom</module>
    <module>dashbuilder-deps</module>
    <module>dashbuilder-backend</module>
    <module>dashbuilder-shared</module>
    <module>dashbuilder-client</module>
    <module>dashbuilder-packaging</module>
    <module>dashbuilder-webapp</module>
  </modules>

  <profiles>
    <profile>
      <id>fullProfile</id>
      <activation>
        <property>
          <name>full</name>
        </property>
      </activation>
      <modules>
        <module>dashbuilder-distros</module>
      </modules>
    </profile>
  </profiles>

  <!-- Repositories -->
  <repositories>
    <repository>
      <id>jboss-public-repository-group</id>
      <name>JBoss Public Repository Group</name>
      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
      <layout>default</layout>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>daily</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>jboss-public-repository-group</id>
      <name>JBoss Public Repository Group</name>
      <url>https://repository.jboss.org/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>true</enabled>
      </snapshots>
    </pluginRepository>
  </pluginRepositories>

  <!-- IMPORTANT: Do not declare any dependencies here! Declare them in dashbuilder-deps. -->
  <dependencyManagement/>
  <dependencies/>

  <!-- DistributionManagement is already defined in jboss-parent-->
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-enforcer-plugin</artifactId>
          <dependencies>
            <dependency>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>extra-enforcer-rules</artifactId>
              <version>1.0-beta-4-jbossorg-1</version>
            </dependency>
          </dependencies>
          <executions>
            <execution>
              <id>ban-unwanted-logging-deps</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <phase>validate</phase>
              <configuration>
                <rules>
                  <bannedDependencies>
                    <excludes>
                      <!-- In case of transitive dependency, exclude it and use jcl-over-slf4j instead -->
                      <exclude>commons-logging:commons-log*</exclude>
                      <!-- In case of transitive dependency, exclude it and use log4j-over-slf4j instead -->
                      <exclude>log4j:log4j</exclude>
                    </excludes>
                  </bannedDependencies>
                </rules>
              </configuration>
            </execution>
            <execution>
              <id>ban-duplicated-classes</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <phase>validate</phase>
              <configuration>
                <rules>
                  <banDuplicateClasses>
                    <ignoreClasses>
                      <!-- Classes bundled in errai-javax-enterprise which are GWT friendly.
                           See https://github.com/errai/errai/blob/master/errai-javax-enterprise/README -->
                      <ignoreClass>javax.interceptor.InvocationContext</ignoreClass>
                      <ignoreClass>javax.inject.Provider</ignoreClass>
                      <ignoreClass>javax.inject.Named</ignoreClass>
                      <ignoreClass>javax.inject.Scope</ignoreClass>
                      <ignoreClass>javax.inject.Qualifier</ignoreClass>
                      <ignoreClass>javax.enterprise.*</ignoreClass>
                      <!-- Classes from gwt-user duplicated in errai-uibinder -->
                      <ignoreClass>com.google.gwt.uibinder.rebind.UiBinderWriter</ignoreClass>
                      <ignoreClass>com.google.gwt.uibinder.rebind.UiBinderGenerator</ignoreClass>
                      <!-- Duplicated by XStream's transitive deps, with very little chance to get properly fixed -->
                      <ignoreClass>org.xmlpull.v1.XmlPullParserException</ignoreClass>
                      <ignoreClass>org.xmlpull.v1.XmlPullParser</ignoreClass>
                    </ignoreClasses>
                    <dependencies>
                      <!-- gwt-dev bundles dozens of different 3rd party dependencies, but can not be usually excluded
                           as e.g. GWT Mockito tests are using the com.google.gwt classes inside. Ignoring it for the
                           duplicate classes check seems to be the only way. -->
                      <dependency>
                        <groupId>com.google.gwt</groupId>
                        <artifactId>gwt-dev</artifactId>
                        <type>jar</type>
                        <ignoreClasses>
                          <ignoreClass>*</ignoreClass>
                        </ignoreClasses>
                      </dependency>
                      <!-- gwt-user bundles javax.servlet classes which usually conflicts with the servlet dependencies
                           in -webapp modules. -->
                      <dependency>
                        <groupId>com.google.gwt</groupId>
                        <artifactId>gwt-user</artifactId>
                        <type>jar</type>
                        <ignoreClasses>
                          <ignoreClass>javax.servlet.*</ignoreClass>
                        </ignoreClasses>
                      </dependency>
                      <dependency>
                        <groupId>org.apache.xmlbeans</groupId>
                        <artifactId>xmlbeans</artifactId>
                        <type>jar</type>
                        <ignoreClasses>
                          <!-- Classes duplicated by the jar itself (bug), see https://issues.apache.org.jira/browse/XMLBEANS-499 -->
                          <ignoreClass>org.apache.xmlbeans.xml.stream.XMLName</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.XMLInputStream</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.utils.NestedThrowable</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.utils.NestedThrowable$Util</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.XMLStreamException</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.ReferenceResolver</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.XMLEvent</ignoreClass>
                          <ignoreClass>org.apache.xmlbeans.xml.stream.Location</ignoreClass>
                        </ignoreClasses>
                      </dependency>
                    </dependencies>
                    <findAllDuplicates>true</findAllDuplicates>
                  </banDuplicateClasses>
                </rules>
                <fail>true</fail>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <configuration>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <fork>true</fork>
            <meminitial>128m</meminitial>
            <maxmem>512m</maxmem>
            <showDeprecation>true</showDeprecation>
            <showWarnings>true</showWarnings>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <includes>
              <include>**/*Test.java</include>
            </includes>
            <excludes>
              <exclude>**/*IntegrationTest.java</exclude>
            </excludes>
            <argLine>-Xmx1024m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8</argLine>
            <systemProperties>
              <property>
                <name>apple.awt.UIElement</name>
                <value>true</value>
              </property>
            </systemProperties>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <executions>
            <execution>
              <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <includes>
              <include>**/*IntegrationTest.java</include>
            </includes>
            <argLine>-Xmx1024m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8</argLine>
          </configuration>
        </plugin>

        <!-- Packaging -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <executions>
            <!-- No OSGi manifestEntries for <goal>jar</goal>: if it supported, then felix has already added them -->
            <execution>
              <id>attach-test-jar</id>
              <goals>
                <goal>test-jar</goal>
              </goals>
              <configuration>
                <excludes>
                  <exclude>**/logback-test.xml</exclude>
                  <exclude>**/jndi.properties</exclude>
                </excludes>
                <archive>
                  <manifestEntries>
                    <Bundle-SymbolicName>${project.artifactId}.tests</Bundle-SymbolicName>
                    <Bundle-Version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${osgi.snapshot.qualifier}</Bundle-Version>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
          </executions>
          <configuration>
            <archive>
              <manifest>
                <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
              <configuration>
                <archive>
                  <manifestEntries>
                    <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                    <Bundle-SymbolicName>${project.artifactId}.source</Bundle-SymbolicName>
                    <Bundle-Version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${osgi.snapshot.qualifier}</Bundle-Version>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                    <Eclipse-SourceBundle>${project.artifactId};version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${osgi.snapshot.qualifier}";roots:="."</Eclipse-SourceBundle>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
            <execution>
              <id>attach-test-sources</id>
              <goals>
                <goal>test-jar-no-fork</goal>
              </goals>
              <configuration>
                <archive>
                  <manifestEntries>
                    <Bundle-ManifestVersion>2</Bundle-ManifestVersion>
                    <Bundle-SymbolicName>${project.artifactId}.tests.source</Bundle-SymbolicName>
                    <Bundle-Version>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${osgi.snapshot.qualifier}</Bundle-Version>
                    <Bundle-Name>${project.name}</Bundle-Name>
                    <Bundle-Vendor>${project.organization.name}</Bundle-Vendor>
                    <Eclipse-SourceBundle>${project.artifactId}.tests;version="${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}.${osgi.snapshot.qualifier}";roots:="."</Eclipse-SourceBundle>
                  </manifestEntries>
                </archive>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!--Fix translations from Zanata -->
        <plugin>
          <groupId>com.google.code.maven-replacer-plugin</groupId>
          <artifactId>replacer</artifactId>
          <version>1.5.2</version>
          <configuration>
            <includes>
              <include>**/*Constants_de.properties</include>
              <include>**/*Constants_es.properties</include>
              <include>**/*Constants_fr.properties</include>
              <include>**/*Constants_ja.properties</include>
              <include>**/*Constants_pt_BR.properties</include>
              <include>**/*Constants_zh_CN.properties</include>
              <include>**/*Constants_ru.properties</include>
            </includes>
            <excludes>
              <exclude>**/ErraiApp.properties</exclude>
            </excludes>
            <replacements>
              <replacement>
                <token>''</token>
                <value>'</value>
              </replacement>
              <replacement>
                <token>'</token>
                <value>''</value>
              </replacement>
            </replacements>
          </configuration>
        </plugin>

        <!-- Zanata -->
        <plugin>
          <groupId>org.zanata</groupId>
          <artifactId>zanata-maven-plugin</artifactId>
          <version>2.3.0</version>
          <configuration>
            <excludes>**/ErraiApp.properties</excludes>
            <projectConfig>${session.executionRootDirectory}/src/main/config/zanata.xml</projectConfig>
            <srcDir>src/main/resources/</srcDir>
            <transDir>src/main/resources/</transDir>
            <includes>**/*Constants.properties</includes>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <configuration>
            <links>
              <link>http://docs.oracle.com/javase/6/docs/api</link>
            </links>
            <minmemory>128m</minmemory>
            <maxmemory>512m</maxmemory>
            <author>false</author>
            <breakiterator>true</breakiterator>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>jaxb2-maven-plugin</artifactId>
          <version>1.3</version>
        </plugin>

      </plugins>
    </pluginManagement>

    <plugins>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
      </plugin>

      <plugin>
        <!-- Entry needed to provide parsed version properties -->
        <!-- Additionally it adds allows generated sources goes into -sources artifact -->
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>target/generated-sources/annotations/</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <!-- Entry needed to create test-jars even for packaging types war, bundle, ... -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
      </plugin>

      <plugin>
        <!-- Entry needed to create, install and deploy sources jars -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
      </plugin>

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

</project>
