<!--
  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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
         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</groupId>
        <artifactId>apache</artifactId>
        <version>18</version>
    </parent>

    <groupId>com.alibaba</groupId>
    <artifactId>dubbo-parent</artifactId>
    <version>2.6.1-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <description>The parent project of dubbo</description>
    <url>https://github.com/apache/incubator-dubbo</url>
    <inceptionYear>2011</inceptionYear>
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/apache/incubator-dubbo</url>
        <connection>scm:git:https://github.com/apache/incubator-dubbo.git</connection>
        <developerConnection>scm:git:https://github.com/apache/incubator-dubbo.git</developerConnection>
    </scm>
    <mailingLists>
        <mailingList>
            <name>Development List</name>
            <subscribe>dev-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>dev@dubbo.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>commits@dubbo.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Issues List</name>
            <subscribe>issues-subscribe@dubbo.apache.org</subscribe>
            <unsubscribe>issues-unsubscribe@dubbo.apache.org</unsubscribe>
            <post>issues@dubbo.apache.org</post>
        </mailingList>
    </mailingLists>
    <developers>
        <developer>
            <id>dubbo.io</id>
            <name>The Dubbo Project Contributors</name>
            <email>dev-subscribe@dubbo.apache.org</email>
            <url>http://dubbo.apache.org/</url>
        </developer>
    </developers>

    <organization>
        <name>The Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>

    <issueManagement>
        <system>Github Issues</system>
        <url>https://github.com/apache/incubator-dubbo/issues</url>
    </issueManagement>

    <properties>
        <!-- Test libs -->
        <junit_version>4.12</junit_version>
        <easymock_version>3.4</easymock_version>
        <jmockit_version>1.33</jmockit_version>
        <cglib_version>2.2</cglib_version>
        <!-- Build args -->
        <argline>-server -Xms256m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8
            -Djava.net.preferIPv4Stack=true
        </argline>
        <skip_maven_deploy>false</skip_maven_deploy>
        <updateReleaseInfo>true</updateReleaseInfo>
        <project.build.sourceEncoding>${file_encoding}</project.build.sourceEncoding>

        <profile.name>oss</profile.name>
        <!-- for maven compiler plugin -->
        <java_source_version>1.6</java_source_version>
        <java_target_version>1.6</java_target_version>
        <file_encoding>UTF-8</file_encoding>
        <!-- Maven plugins -->
        <maven_jar_version>3.0.2</maven_jar_version>
        <maven_surefire_version>2.19.1</maven_surefire_version>
        <maven_deploy_version>2.8.2</maven_deploy_version>
        <maven_compiler_version>3.6.0</maven_compiler_version>
        <maven_source_version>3.0.1</maven_source_version>
        <maven_javadoc_version>3.0.0</maven_javadoc_version>
        <maven_jetty_version>6.1.26</maven_jetty_version>
        <maven_checkstyle_version>3.0.0</maven_checkstyle_version>
        <maven_jacoco_version>0.8.1</maven_jacoco_version>
        <apache-rat-plugin.version>0.12</apache-rat-plugin.version>
    </properties>

    <modules>
        <module>hessian-lite</module>
        <module>dubbo-common</module>
        <module>dubbo-container</module>
        <module>dubbo-remoting</module>
        <module>dubbo-rpc</module>
        <module>dubbo-filter</module>
        <module>dubbo-cluster</module>
        <module>dubbo-registry</module>
        <module>dubbo-monitor</module>
        <module>dubbo-config</module>
        <module>dubbo-demo</module>
        <module>dubbo-plugin</module>
        <module>dubbo-serialization</module>
        <module>dependencies-bom</module>
        <module>bom</module>
        <module>all</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo-dependencies-bom</artifactId>
                <version>2.6.1-SNAPSHOT</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>${easymock_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jmockit</groupId>
            <artifactId>jmockit</artifactId>
            <version>${jmockit_version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib-nodep</artifactId>
            <version>${cglib_version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>java6</id>
            <properties>
                <maven_jar_version>3.0.2</maven_jar_version>
                <maven_surefire_version>2.19.1</maven_surefire_version>
                <maven_deploy_version>2.7</maven_deploy_version>
                <maven_compiler_version>3.1</maven_compiler_version>
                <maven_source_version>3.0.1</maven_source_version>
                <maven_javadoc_version>2.10.1</maven_javadoc_version>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <activation>
                <file>
                    <missing>.project</missing>
                </file>
            </activation>
            <modules>
                <module>dubbo-test</module>
            </modules>
        </profile>
        <profile>
            <id>hudson</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <testFailureIgnore>true</testFailureIgnore>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>java8-vm-args</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <properties>
                <!-- Build args -->
                <!-- if you run dubbo on java8+,please use these vm args -->
                <argline>-server -Xms256m -Xmx512m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m -Dfile.encoding=UTF-8
                    -Djava.net.preferIPv4Stack=true
                </argline>
            </properties>
        </profile>
        <profile>
            <id>checkstyle</id>
            <activation>
                <jdk>[1.8,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>checkstyle-validation</id>
                                <phase>validate</phase>
                                <configuration>
                                    <configLocation>codestyle/checkstyle.xml</configLocation>
                                    <suppressionsLocation>codestyle/checkstyle-suppressions.xml</suppressionsLocation>
                                    <headerLocation>codestyle/checkstyle-header.txt</headerLocation>
                                    <linkXRef>false</linkXRef>
                                    <encoding>UTF-8</encoding>
                                    <consoleOutput>true</consoleOutput>
                                    <failOnViolation>true</failOnViolation>
                                </configuration>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven_javadoc_version}</version>
                        <executions>
                            <execution>
                                <id>attach-javadoc</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <doclint>none</doclint>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <show>public</show>
                            <charset>UTF-8</charset>
                            <encoding>UTF-8</encoding>
                            <docencoding>UTF-8</docencoding>
                            <links>
                                <link>http://docs.oracle.com/javase/7/docs/api</link>
                            </links>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>${maven_source_version}</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven_jar_version}</version>
                <configuration>
                    <archive>
                        <addMavenDescriptor>true</addMavenDescriptor>
                        <index>true</index>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven_surefire_version}</version>
                <configuration>
                    <useSystemClassLoader>true</useSystemClassLoader>
                    <forkMode>once</forkMode>
                    <argLine>${argline} ${jacocoArgLine}</argLine>
                    <systemProperties>
                        <!-- common shared -->
                        <property>
                            <name>transporter</name>
                            <value>${transporter}</value>
                        </property>
                        <property>
                            <name>serialization</name>
                            <value>${serialization}</value>
                        </property>
                        <!-- server side -->
                        <property>
                            <name>port</name>
                            <value>${port}</value>
                        </property>
                        <property>
                            <name>threadpool</name>
                            <value>${threadpool}</value>
                        </property>
                        <property>
                            <name>threads</name>
                            <value>${threads}</value>
                        </property>
                        <property>
                            <name>iothreads</name>
                            <value>${iothreads}</value>
                        </property>
                        <!-- client side -->
                        <property>
                            <name>server</name>
                            <value>${server}</value>
                        </property>
                        <property>
                            <name>timeout</name>
                            <value>${timeout}</value>
                        </property>
                        <property>
                            <name>length</name>
                            <value>${length}</value>
                        </property>
                        <property>
                            <name>connections</name>
                            <value>${connections}</value>
                        </property>
                        <property>
                            <name>base</name>
                            <value>${base}</value>
                        </property>
                        <property>
                            <name>concurrent</name>
                            <value>${concurrent}</value>
                        </property>
                        <property>
                            <name>runs</name>
                            <value>${runs}</value>
                        </property>
                        <property>
                            <name>onerror</name>
                            <value>${onerror}</value>
                        </property>
                    </systemProperties>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>${maven_deploy_version}</version>
                <configuration>
                    <skip>${skip_maven_deploy}</skip>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven_compiler_version}</version>
                <configuration>
                    <fork>true</fork>
                    <source>${java_source_version}</source>
                    <target>${java_target_version}</target>
                    <encoding>${file_encoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${maven_jacoco_version}</version>
                <executions>
                    <execution>
                        <id>jacoco-initialize</id>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                        <configuration>
                            <propertyName>jacocoArgLine</propertyName>
                        </configuration>
                    </execution>
                    <execution>
                        <id>jacoco-site</id>
                        <phase>package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <version>${apache-rat-plugin.version}</version>
                <executions>
                    <execution>
                        <id>verify.rat</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <configuration>
                            <excludes>
                                <exclude>**/*.versionsBackup</exclude>
                                <exclude>**/.idea/</exclude>
                                <exclude>**/*.iml</exclude>
                                <exclude>**/*.txt</exclude>
                                <exclude>**/*.load</exclude>
                                <exclude>**/*.flex</exclude>
                                <exclude>**/*.fc</exclude>
                                <exclude>**/*.javascript</exclude>
                                <exclude>**/*.properties</exclude>
                                <exclude>**/*.thrift</exclude>
                                <exclude>**/*.sh</exclude>
                                <exclude>**/*.bat</exclude>
                                <exclude>**/*.md</exclude>
                                <exclude>.git/</exclude>
                                <exclude>.gitignore</exclude>
                                <!-- ASF jenkins box puts the Maven repo in our root directory. -->
                                <exclude>.repository/</exclude>
                                <exclude>**/.settings/*</exclude>
                                <exclude>**/.classpath</exclude>
                                <exclude>**/.project</exclude>
                                <exclude>**/target/**</exclude>
                                <exclude>**/*.log</exclude>
                                <exclude>CODE_OF_CONDUCT.md</exclude>
                                <exclude>.codecov.yml</exclude>
                                <exclude>.travis.yml</exclude>
                                <exclude>PULL_REQUEST_TEMPLATE.md</exclude>
                                <exclude>CONTRIBUTING.md</exclude>
                                <exclude>README.md</exclude>
                                <exclude>**/codestyle/*</exclude>
                                <exclude>**/resources/META-INF/**</exclude>
                                <!-- exclude the hessian-lite files -->
                                <exclude>**/com/caucho/hessian/**</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <pluginManagement>
            <plugins>
                <!-- keep surefire and failsafe in sync -->
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19.1</version>
                </plugin>
                <!-- keep surefire and failsafe in sync -->
                <plugin>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.19.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.1</version>
                </plugin>
                <plugin>
                    <groupId>org.ops4j.pax.exam</groupId>
                    <artifactId>maven-paxexam-plugin</artifactId>
                    <version>1.2.4</version>
                </plugin>
                <!--<plugin>-->
                <!--<artifactId>maven-jar-plugin</artifactId>-->
                <!--<version>3.0.2</version>-->
                <!--<executions>-->
                <!--<execution>-->
                <!--<id>default-jar</id>-->
                <!--<configuration>-->
                <!--<archive>-->
                <!--<manifest>-->
                <!--<addDefaultImplementationEntries>true</addDefaultImplementationEntries>-->
                <!--</manifest>-->
                <!--<index>true</index>-->
                <!--<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>-->
                <!--</archive>-->
                <!--</configuration>-->
                <!--</execution>-->
                <!--</executions>-->
                <!--</plugin>-->
                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>2.10</version>
                </plugin>
                <plugin>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>2.6</version>
                </plugin>
                <plugin>
                    <!-- Do NOT upgrade -->
                    <artifactId>maven-jxr-plugin</artifactId>
                    <version>2.2</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>build-helper-maven-plugin</artifactId>
                    <version>1.10</version>
                </plugin>
                <plugin>
                    <groupId>org.fusesource.hawtjni</groupId>
                    <artifactId>maven-hawtjni-plugin</artifactId>
                    <version>1.14</version>
                </plugin>
                <plugin>
                    <groupId>kr.motd.maven</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <version>1.0.0.Final</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.4.3</version>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>maven-jetty-plugin</artifactId>
                    <version>${maven_jetty_version}</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>${maven_checkstyle_version}</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <version>8.9</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
