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

    <groupId>com.wee0.box</groupId>
    <artifactId>box-parent</artifactId>
    <version>0.4.2</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <url>https://github.com/baihw/box</url>
    <description>adaptive framework</description>

    <modules>
	    <module>box-utils-api</module>
	    <module>box-utils</module>
        <module>box-api</module>
        <module>box-impl</module>
        <module>box-spring-boot</module>
		<module>box-core-api</module>
        <module>box-core-impl</module>
        <module>box-data-api</module>
        <module>box-data-impl</module>
        <module>box-data-empire</module>
    </modules>

    <properties>
        <encoding.default>UTF-8</encoding.default>
        <jdk.default>1.8</jdk.default>
        <!-- 项目基础配置 -->
        <project.build.sourceEncoding>${encoding.default}</project.build.sourceEncoding>
        <project.reporting.outputEncoding>${encoding.default}</project.reporting.outputEncoding>
        <maven.compiler.source>${jdk.default}</maven.compiler.source>
        <maven.compiler.target>${jdk.default}</maven.compiler.target>
        <java.version>${jdk.default}</java.version>

        <!-- 主要依赖库版本 -->
        <box.version>${project.version}</box.version>
        <spring.version>5.1.12.RELEASE</spring.version>
        <spring.boot.version>2.1.11.RELEASE</spring.boot.version>
        <slf4j.version>1.7.25</slf4j.version>
        <logback.version>1.2.3</logback.version>
        <log4j2.version>2.7</log4j2.version>
        <jackson.version>2.9.9</jackson.version>
        <commons-fileupload.version>1.4</commons-fileupload.version>
        <commons-beanutils.version>1.8.3</commons-beanutils.version>
        <cglib.version>3.2.12</cglib.version>
        <empire-db.version>2.5.0</empire-db.version>
        <mybatis.version>3.5.2</mybatis.version>
        <druid.version>1.2.6</druid.version>
        <h2.version>1.4.199</h2.version>
        <mysql.version>5.1.48</mysql.version>
        <oracle.version>11.2.0.3</oracle.version>
        <jedis.version>3.1.0</jedis.version>
        <caffeine.version>2.6.2</caffeine.version>
        <ehcache.version>2.10.3</ehcache.version>
        <hazelcast.version>3.12.5</hazelcast.version>
        <amqp-client.version>5.8.0</amqp-client.version>
        <shiro.version>1.3.2</shiro.version>
        <servlet-api.version>3.1.0</servlet-api.version>
        <freemarker.version>2.3.30</freemarker.version>
        <snakeyaml.version>1.26</snakeyaml.version>

        <!-- 测试依赖库版本 -->
        <junit-jupiter.version>5.7.2</junit-jupiter.version>
        <junit.version>4.12</junit.version>
        <hamcrest.version>1.3</hamcrest.version>
        <!--<mockito.version>2.28.2</mockito.version>-->
        <mockito.version>3.5.10</mockito.version>

        <!-- 依赖插件配置 -->
        <plugin.javadoc.show>public</plugin.javadoc.show>
        <plugin.javadoc.title>box</plugin.javadoc.title>
        <plugin.javadoc.bottom><![CDATA[Copyright wee0.com]]></plugin.javadoc.bottom>
        <plugin.javadoc.sourcepath>${basedir}/src/main/java</plugin.javadoc.sourcepath>
        <lombok.version>1.18.20</lombok.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- box -->
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-api</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-impl</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-utils-api</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-utils</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-spring-boot</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-core-api</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-core-impl</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-data-api</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-data-impl</artifactId>
                <version>${box.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wee0.box</groupId>
                <artifactId>box-data-empire</artifactId>
                <version>${box.version}</version>
            </dependency>
            <!-- spring -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!-- springBoot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>${spring.boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.tomcat</groupId>
                        <artifactId>tomcat-jdbc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
                <version>${spring.boot.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.apache.tomcat</groupId>
                        <artifactId>tomcat-jdbc</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${spring.boot.version}</version>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring.boot.version}</version>
                <scope>test</scope>
            </dependency>
            <!-- log -->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.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>
            <!-- db -->
            <dependency>
                <groupId>org.apache.empire-db</groupId>
                <artifactId>empire-db</artifactId>
                <version>${empire-db.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>${mybatis.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>${h2.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.oracle</groupId>
                <artifactId>ojdbc6</artifactId>
                <version>${oracle.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <!-- cache -->
            <dependency>
                <groupId>redis.clients</groupId>
                <artifactId>jedis</artifactId>
                <version>${jedis.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>${caffeine.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>net.sf.ehcache</groupId>
                <artifactId>ehcache</artifactId>
                <version>${ehcache.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast</artifactId>
                <version>${hazelcast.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <!-- message -->
            <dependency>
                <groupId>com.rabbitmq</groupId>
                <artifactId>amqp-client</artifactId>
                <version>${amqp-client.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <!-- template -->
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <!-- others -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>${servlet-api.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.version}</version>
            </dependency>
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>${cglib.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>${commons-fileupload.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>${commons-beanutils.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.apache.shiro</groupId>
                <artifactId>shiro-core</artifactId>
                <version>${shiro.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.yaml</groupId>
                <artifactId>snakeyaml</artifactId>
                <version>${snakeyaml.version}</version>
                <scope>provided</scope>
                <optional>true</optional>
            </dependency>
            <!-- test -->
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-api</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-params</artifactId>
                <version>${junit-jupiter.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mockito</groupId>
                <artifactId>mockito-core</artifactId>
                <version>${mockito.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <testSourceDirectory>src/test/java</testSourceDirectory>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>${jdk.default}</source>
                        <target>${jdk.default}</target>
                        <encoding>${encoding.default}</encoding>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-javadoc-plugin</artifactId>
                    <version>3.0.1</version>
                    <configuration>
                        <source>${jdk.default}</source>
                        <show>${plugin.javadoc.show}</show>
                        <doctitle>${plugin.javadoc.title}</doctitle>
                        <windowtitle>${plugin.javadoc.title}</windowtitle>
                        <bottom>${plugin.javadoc.bottom}</bottom>
                        <sourcepath>${plugin.javadoc.sourcepath}</sourcepath>
                        <doclint>all,-missing</doclint>
                        <nohelp>true</nohelp>
                        <charset>${encoding.default}</charset>
                        <docencoding>${encoding.default}</docencoding>
                        <encoding>${encoding.default}</encoding>
                        <tags>
                            <tag>
                                <name>CreateDate</name>
                                <placement>a</placement>
                                <head>创建时间</head>
                            </tag>
                            <tag>
                                <name>Description</name>
                                <placement>a</placement>
                                <head>描述信息</head>
                            </tag>
                        </tags>
                    </configuration>
                    <executions>
                        <execution>
                            <id>attach-javadocs</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.2</version>
                </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-no-fork</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-gpg-plugin</artifactId>
                    <version>1.6</version>
                    <executions>
                        <execution>
                            <phase>verify</phase>
                            <goals>
                                <goal>sign</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-surefire-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>deploy</id>
            <build>
                <plugins>
                    <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-gpg-plugin</artifactId>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!-- 发布设置 -->
    <distributionManagement>
        <snapshotRepository>
            <id>sonatype-repo</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
            <uniqueVersion>false</uniqueVersion>
        </snapshotRepository>
        <repository>
            <id>sonatype-repo</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <licenses>
        <license>
            <name>The Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <scm>
        <tag>master</tag>
        <connection>scm:git:git@github.com:baihw/box.git</connection>
        <developerConnection>scm:git:git@github.com:baihw/box.git</developerConnection>
        <url>scm:git:git@github.com:baihw/box.git</url>
    </scm>
    <developers>
        <developer>
            <name>baihw</name>
            <email>78026399@qq.com</email>
            <organization>github</organization>
            <organizationUrl>https://github.com/baihw/</organizationUrl>
        </developer>
    </developers>
</project>