<?xml version="1.0" encoding="UTF-8"?>
<!-- 

    Copyright 2015-2016 the original author or authors.

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

  <parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>9</version>
  </parent>

  <groupId>org.nanoframework</groupId>
  <artifactId>nano</artifactId>
  <version>1.4.9</version>
  <packaging>pom</packaging>
  <inceptionYear>2015</inceptionYear>

  <name>Nano</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <cs.dir>${project.basedir}</cs.dir>

    <maven-compiler-plugin-version>3.1</maven-compiler-plugin-version>
    <maven-source-plugin-version>2.2.1</maven-source-plugin-version>
    <maven-javadoc-plugin-version>2.9.1</maven-javadoc-plugin-version>
    <maven-findbugs-plugin.version>3.0.1</maven-findbugs-plugin.version>
    <maven-findbugs-contrib-plugin.version>6.2.1</maven-findbugs-contrib-plugin.version>
    <maven-findbugs-security-plugin.version>1.4.1</maven-findbugs-security-plugin.version>
    <coveralls-maven-plugin.version>4.2.0</coveralls-maven-plugin.version>
    <cobertura-maven-plugin.version>2.7</cobertura-maven-plugin.version>
    <license-maven-plugin.version>2.11</license-maven-plugin.version>

    <junit-version>4.12</junit-version>
    <slf4j-version>1.7.25</slf4j-version>
    <log4j2-version>2.8.2</log4j2-version>
    <google-guice-version>4.1.0</google-guice-version>
    <guava-version>21.0</guava-version>
    <commons-lang3-version>3.4</commons-lang3-version>
    <commons-codec-version>1.10</commons-codec-version>
    <fastjson-version>1.2.32</fastjson-version>
    <mybatis-version>3.4.1</mybatis-version>
    <mybatis-guice-version>3.8</mybatis-guice-version>
    <mysql-connector-version>5.1.29</mysql-connector-version>
    <c3p0-version>0.9.5.2</c3p0-version>
    <druid-version>1.0.18</druid-version>
    <tomcat-jdbc-version>8.0.33</tomcat-jdbc-version>
    <netty-version>4.1.3.Final</netty-version>
    <jedis-version>2.9.0</jedis-version>
    <servlet-api-version>3.0.1</servlet-api-version>
    <servlet-jsp-api-version>2.2.1</servlet-jsp-api-version>
    <servlet-jsp-jstl-api-version>1.2.1</servlet-jsp-jstl-api-version>
    <jstl-version>1.2</jstl-version>
    <jsp-version>2.2.0.v201112011158</jsp-version>
    <jetty-version>8.1.19.v20160209</jetty-version>
    <jsp-support-version>2.2.3</jsp-support-version>
    <ganymed-version>262</ganymed-version>
    <shiro-version>1.4.0</shiro-version>
    <jose4j-version>0.5.1</jose4j-version>
    <validation-api-version>1.1.0.Final</validation-api-version>
    <jgit-version>4.8.0.201705170830-rc1</jgit-version>
    <commons-io-version>2.5</commons-io-version>
    <consul-client-version>0.16.1</consul-client-version>
    <rocketmq-version>4.1.0-incubating</rocketmq-version>
    <kafka-clients-version>0.11.0.0</kafka-clients-version>
  </properties>

  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/nano-projects/nano-framework/issues</url>
  </issueManagement>

  <modules>
    <module>nano-commons</module>
    <module>nano-core</module>
    <module>nano-orm</module>
    <module>nano-concurrent-parent</module>
    <module>nano-webmvc</module>
    <module>nano-server</module>
    <module>nano-jetty-server</module>
    <module>nano-tomcat-server</module>
    <module>nano-ext</module>
    <module>nano-super</module>
  </modules>

  <scm>
    <connection>scm:git:git@github.com:nano-projects/nano-framework.git</connection>
    <developerConnection>scm:git:git@github.com:nano-projects/nano-framework.git</developerConnection>
    <url>https://github.com/nano-projects/nano-framework</url>
    <tag>HEAD</tag>
  </scm>

  <developers>
    <developer>
      <id>yanghe</id>
      <name>yanghe</name>
      <email>comicme_yanghe@icloud.com</email>
    </developer>
  </developers>

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

  <dependencyManagement>
    <dependencies>
      <!-- Test -->
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit-version}</version>
        <scope>test</scope>
      </dependency>

      <!-- Log4j 2 -->
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jcl</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j2-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j2-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j2-version}</version>
      </dependency>

      <!-- Commons -->
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3-version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec-version}</version>
      </dependency>

      <!-- Google Guice -->
      <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>${google-guice-version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-multibindings</artifactId>
        <version>${google-guice-version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.inject.extensions</groupId>
        <artifactId>guice-servlet</artifactId>
        <version>${google-guice-version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava-version}</version>
      </dependency>

      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis-version}</version>
      </dependency>

      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-guice</artifactId>
        <version>${mybatis-guice-version}</version>
      </dependency>

      <!-- Servlet环境 -->
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet-api-version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>${servlet-jsp-api-version}</version>
        <scope>provided</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>${servlet-jsp-jstl-api-version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl-version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty.orbit</groupId>
        <artifactId>javax.servlet.jsp</artifactId>
        <version>${jsp-version}</version>
      </dependency>

      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson-version}</version>
      </dependency>

      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-version}</version>
      </dependency>

      <dependency>
        <groupId>com.mchange</groupId>
        <artifactId>c3p0</artifactId>
        <version>${c3p0-version}</version>
      </dependency>

      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid-version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
        <version>${tomcat-jdbc-version}</version>
      </dependency>

      <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>${jedis-version}</version>
      </dependency>

      <!-- Netty -->
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-handler</artifactId>
        <version>${netty-version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-codec-http</artifactId>
        <version>${netty-version}</version>
      </dependency>

      <!-- Jetty -->
      <dependency>
        <groupId>org.eclipse.jetty.aggregate</groupId>
        <artifactId>jetty-all</artifactId>
        <version>${jetty-version}</version>
      </dependency>

      <!-- JSP Support -->
      <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.servlet.jsp</artifactId>
        <version>${jsp-support-version}</version>
      </dependency>

      <!-- EL Support -->
      <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.el</artifactId>
        <version>${jsp-support-version}</version>
      </dependency>

      <!-- Ganymed SSH2 -->
      <dependency>
        <groupId>ch.ethz.ganymed</groupId>
        <artifactId>ganymed-ssh2</artifactId>
        <version>${ganymed-version}</version>
      </dependency>

      <!-- Shiro Security Framework -->
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>${shiro-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-web</artifactId>
        <version>${shiro-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-guice</artifactId>
        <version>${shiro-version}</version>
      </dependency>

      <dependency>
        <groupId>org.bitbucket.b_c</groupId>
        <artifactId>jose4j</artifactId>
        <version>${jose4j-version}</version>
      </dependency>
      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${validation-api-version}</version>
      </dependency>

      <dependency>
        <groupId>org.eclipse.jgit</groupId>
        <artifactId>org.eclipse.jgit</artifactId>
        <version>${jgit-version}</version>
      </dependency>

      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io-version}</version>
      </dependency>

      <dependency>
        <groupId>com.orbitz.consul</groupId>
        <artifactId>consul-client</artifactId>
        <version>${consul-client-version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>${rocketmq-version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>${kafka-clients-version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>

    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eclipse.m2e</groupId>
          <artifactId>lifecycle-mapping</artifactId>
          <version>1.0.0</version>
          <configuration>
            <lifecycleMappingMetadata>
              <pluginExecutions>
                <pluginExecution>
                  <pluginExecutionFilter>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <versionRange>[1.0.0,)</versionRange>
                    <goals>
                      <goal>enforce</goal>
                    </goals>
                  </pluginExecutionFilter>
                  <action>
                    <ignore />
                  </action>
                </pluginExecution>
              </pluginExecutions>
            </lifecycleMappingMetadata>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven-compiler-plugin-version}</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>${maven-source-plugin-version}</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven-javadoc-plugin-version}</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <!-- <skip>true</skip> -->
            <show>public</show>
            <charset>UTF-8</charset>
            <encoding>UTF-8</encoding>
            <docencoding>UTF-8</docencoding>
            <links>
              <link>http://docs.oracle.com/javase/8/docs/api</link>
            </links>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <tagBase>https://github.com/nano-projects/nano-framework/tags</tagBase>
            <useReleaseProfile>false</useReleaseProfile>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>findbugs-maven-plugin</artifactId>
          <version>${maven-findbugs-plugin.version}</version>
          <configuration>
            <plugins>
              <plugin>
                <groupId>com.mebigfatguy.fb-contrib</groupId>
                <artifactId>fb-contrib</artifactId>
                <version>${maven-findbugs-contrib-plugin.version}</version>
              </plugin>
              <plugin>
                <groupId>com.h3xstream.findsecbugs</groupId>
                <artifactId>findsecbugs-plugin</artifactId>
                <version>${maven-findbugs-security-plugin.version}</version>
              </plugin>
            </plugins>
            <includeFilterFile>${cs.dir}/findbugs-rules.xml</includeFilterFile>
            <effort>Max</effort>
            <failOnError>true</failOnError>
          </configuration>
          <executions>
            <execution>
              <id>findbugs-check</id>
              <phase>compile</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.eluder.coveralls</groupId>
          <artifactId>coveralls-maven-plugin</artifactId>
          <version>${coveralls-maven-plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>cobertura-maven-plugin</artifactId>
          <version>${cobertura-maven-plugin.version}</version>
          <configuration>
            <aggregate>true</aggregate>
            <formats>
              <format>xml</format>
              <format>html</format>
            </formats>
            <instrumentation>
              <excludes>
                <exclude>**/*Test.class</exclude>
              </excludes>
            </instrumentation>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>${license-maven-plugin.version}</version>
          <configuration>
            <header>${cs.dir}/src/licensing/header.txt</header>
            <skipExistingHeaders>true</skipExistingHeaders>
            <strictCheck>true</strictCheck>
            <headerDefinitions>
              <headerDefinition>${cs.dir}/src/licensing/header-definitions.xml</headerDefinition>
            </headerDefinitions>
            <aggregate>true</aggregate>
            <mapping>
              <schema>SCRIPT_STYLE</schema>
              <ldif>SCRIPT_STYLE</ldif>
              <yml>SCRIPT_STYLE</yml>
              <ini>SCRIPT_STYLE</ini>
              <conf>JAVADOC_STYLE</conf>
              <less>JAVADOC_STYLE</less>
              <ts>JAVADOC_STYLE</ts>
              <sql>JAVADOC_STYLE</sql>
            </mapping>
            <excludes>
              <exclude>**/bin/**</exclude>
              <exclude>**/build/**</exclude>
              <exclude>**/.gradle/**</exclude>
              <exclude>LICENSE</exclude>
              <exclude>**/INSTALL*</exclude>
              <exclude>**/NOTICE*</exclude>
              <exclude>**/README*</exclude>
              <exclude>**/readme*</exclude>
              <exclude>**/*.log</exclude>
              <exclude>**/*.license</exclude>
              <exclude>**/*.donotdelete</exclude>
              <exclude>**/*.orig</exclude>
              <exclude>**/*.txt</exclude>
              <exclude>**/*.crt</exclude>
              <exclude>**/*.cer</exclude>
              <exclude>**/*.jks</exclude>
              <exclude>**/*.crl</exclude>
              <exclude>**/*.key</exclude>
              <exclude>**/*.json</exclude>
              <exclude>**/*.checkstyle</exclude>
              <exclude>**/*.properties</exclude>
              <exclude>**/.gitignore</exclude>
              <exclude>**/overlays/**</exclude>
              <exclude>src/licensing/**</exclude>
              <exclude>**/testCA/**</exclude>
              <exclude>**/.idea/**</exclude>
              <exclude>**/*.keystore</exclude>
              <exclude>**/*.example</exclude>
              <exclude>**/*.jmx</exclude>
              <exclude>**/*.pandoc</exclude>
              <exclude>**/*.sample</exclude>
              <exclude>**/*.doc</exclude>
              <exclude>**/*.md</exclude>
              <exclude>**/*.pdf</exclude>
              <exclude>**/*.pem</exclude>
              <exclude>**/*.p8</exclude>
              <exclude>**/*.bin</exclude>
              <exclude>**/*.idx</exclude>
              <exclude>**/jetty.pid</exclude>
              <exclude>**/.gitkeep</exclude>
              <exclude>**/.fbIncludeFilterFile</exclude>
              <exclude>**/node_modules/**</exclude>
              <exclude>**/typings/**</exclude>
              <xclude>**/docs/**</xclude>
              <exclude>**/*.vue</exclude>
              <exclude>**/*.js</exclude>
              <exclude>**/*.css</exclude>
              <exclude>**/.*</exclude>
              <exclude>**/*.svg</exclude>
              <exclude>**/*.ttf</exclude>
              <exclude>**/*.eot</exclude>
              <exclude>**/*.woff2</exclude>
              <exclude>**/*.woff</exclude>
              <exclude>**/*.otf</exclude>
              <exclude>**/*.js.map</exclude>
              <exclude>**/*.pid</exclude>
            </excludes>
          </configuration>
          <executions>
            <execution>
              <phase>compile</phase>
              <goals>
                <goal>check</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-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-release-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>findbugs-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.eluder.coveralls</groupId>
        <artifactId>coveralls-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>