<?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.github.ibole</groupId>
	<artifactId>microservice-parent</artifactId>
	<version>1.0.6</version>
	<packaging>pom</packaging>
	<name>${project.artifactId}</name>
	<description>The parent project of IBole microservice framework</description>
	<url>https://github.com/benson-git/ibole-microservice</url>
	<inceptionYear>2016</inceptionYear>
	<licenses>
		<license>
			<name>Apache 2</name>
			<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
			<comments>A business-friendly OSS license</comments>
		</license>
	</licenses>
	<organization>
		<name>IBole</name>
		<url>https://github.com/ibole</url>
	</organization>
  <developers>
    <developer>
      <id>com.github.ibole</id>
      <name>iBole Microservice Framework Contributors</name>
      <email>chikaiwang@hotmail.com</email>
      <url>https://github.com/ibole</url>
      <organization>IBole, Inc.</organization>
      <organizationUrl>https://github.com/ibole</organizationUrl>
    </developer>
  </developers>
  <scm>
    <connection>scm:git:https://github.com/benson-git/ibole-microservice.git</connection>
    <developerConnection>scm:git:git@github.com:benson-git/ibole-microservice.git</developerConnection>
    <url>https://github.com/benson-git/ibole-microservice</url>
  </scm>
   <issueManagement>
      <system>GitHub Issue Tracker</system>
      <url>https://github.com/benson-git/ibole-microservice/issues</url>
   </issueManagement>
	<modules>
		<module>microservice-common</module>
		<module>microservice-container</module>
		<module>microservice-remoting</module>
		<module>microservice-discovery</module>
		<module>microservice-rpc</module>
		<module>microservice-config</module>
		<module>microservice-test</module>
        <module>microservice-all</module>
        <module>microservice-metrics</module>
	</modules>
	<profiles>
		<profile>
			<id>oss</id>
			<build>
				<plugins>
					<plugin>
					  <groupId>org.sonatype.plugins</groupId>
					  <artifactId>nexus-staging-maven-plugin</artifactId>
					  <version>1.6.8</version>
					  <extensions>true</extensions>
					  <configuration>
						<serverId>ossrh</serverId>
						<nexusUrl>https://oss.sonatype.org/</nexusUrl>
						<autoReleaseAfterClose>true</autoReleaseAfterClose>
					  </configuration>
					</plugin>
					<plugin>
					  <groupId>org.apache.maven.plugins</groupId>
					  <artifactId>maven-gpg-plugin</artifactId>
					  <version>1.6</version>
					  <executions>
						<execution>
						  <id>sign-artifacts</id>
						  <phase>verify</phase>
						  <goals>
							<goal>sign</goal>
						  </goals>
						</execution>
					  </executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
	<properties>
		<infrastructure_all_version>1.10.0</infrastructure_all_version>
		<!-- Common libs -->
		<slf4j_log4j12_version>1.7.5</slf4j_log4j12_version>
		<commons_logging_api_version>1.1</commons_logging_api_version>
		<log4j_version>1.2.17</log4j_version>
		<netty_tcnative_boringssl_static_version>1.1.33.Fork26</netty_tcnative_boringssl_static_version>
		<netty_tcnative_version>1.1.33.Fork26</netty_tcnative_version>
	    <javassist_version>3.18.0-GA</javassist_version>
	    <byte-buddy_version>1.5.8</byte-buddy_version>
		<grpc_version>1.2.0</grpc_version>
		<protobuf_java_version>3.2.0</protobuf_java_version>  
		<guava_version>19.0</guava_version>
		<gson_version>2.3</gson_version>
		<springframework_version>4.2.6.RELEASE</springframework_version>
		<zookeeper_version>3.4.9</zookeeper_version>
		<curator_version>2.12.0</curator_version>
		<dropwizard_metrics_version>3.2.2</dropwizard_metrics_version>
		<caffeine_version>2.4.0</caffeine_version>
        <google.api.client.version>1.22.0</google.api.client.version>
        <google.http.client.version>1.22.0</google.http.client.version>
		<junit_version>4.11</junit_version>
		<mockito_all_version>1.10.19</mockito_all_version>	
		<servlet-api_version>2.5</servlet-api_version>
		<plexus_interpolation_version>1.22</plexus_interpolation_version>
		<!-- Java 7 and Java 8 maven artifact: -->
		<hikariCP_version>2.4.5</hikariCP_version>
		<lombok_version>1.16.8</lombok_version>
		<!-- Java 6 maven artifact: 
		<hikariCP_version>2.3.13</hikariCP_version>-->
		
		<!-- Build args -->
		<file_encoding>UTF-8</file_encoding>
		<argline>-server -Xms64m -Xmx64m -XX:PermSize=64m -XX:MaxPermSize=64m</argline>
		<skip_maven_deploy>false</skip_maven_deploy>
		<updateReleaseInfo>true</updateReleaseInfo>
		<!--指定Maven用什么编码来读取源码及文档 -->
		<project.build.sourceEncoding>${file_encoding}</project.build.sourceEncoding>
		<!--指定Maven用什么编码来呈现站点的HTML文件 -->
        <project.reporting.outputEncoding>${file_encoding}</project.reporting.outputEncoding>
		<!-- generate idea copyright -->
		<copyright>
		  Copyright 2016-2017 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.		
		</copyright>
		
		<!-- for maven compiler plugin -->
		<maven_compiler_plugin_version>3.5.1</maven_compiler_plugin_version>
		<java_source_version>1.8</java_source_version>
		<java_target_version>1.8</java_target_version>
		<maven_source_plugin_version>3.0.0</maven_source_plugin_version>
		<maven_jar_plugin_version>2.6</maven_jar_plugin_version>
		<maven_war_plugin_version>2.2</maven_war_plugin_version>
		<maven_install_plugin_version>2.5.2</maven_install_plugin_version>
		<maven_deploy_plugin_version>2.8.2</maven_deploy_plugin_version>
		<maven_release_plugin_version>2.5.3</maven_release_plugin_version>
        <maven-surefire-plugin_version>2.19.1</maven-surefire-plugin_version>
        <maven_javadoc_plugin_version>2.10.4</maven_javadoc_plugin_version>
        <maven-failsafe-plugin_version>2.19.1</maven-failsafe-plugin_version>
        <!-- for coveralls and  -->
       <maven_coveralls_plugin_version>4.3.0</maven_coveralls_plugin_version>
       <maven_cobertura_plugin_version>2.7</maven_cobertura_plugin_version>
       <maven_jacoco_plugin_version>0.7.9</maven_jacoco_plugin_version>
        
	</properties>
	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.github.ibole</groupId>
				<artifactId>infrastructure-common</artifactId>
				<version>${infrastructure_all_version}</version>
			</dependency>	
			<dependency>
				<groupId>com.github.ibole</groupId>
				<artifactId>infrastructure-security</artifactId>
				<version>${infrastructure_all_version}</version>
		    </dependency>
			<dependency>
				<groupId>com.github.ibole</groupId>
				<artifactId>infrastructure-cache</artifactId>
				<version>${infrastructure_all_version}</version>
		    </dependency>
			<!-- Common libs -->
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava_version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.code.gson</groupId>
				<artifactId>gson</artifactId>
				<version>${gson_version}</version>
			</dependency>
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>servlet-api</artifactId>
				<version>${servlet-api_version}</version>
			</dependency>
			<dependency>
			    <groupId>org.codehaus.plexus</groupId>
			    <artifactId>plexus-interpolation</artifactId>
			    <version>${plexus_interpolation_version}</version>
			</dependency>
			<!-- Byte code tool -->
			<dependency>
				<groupId>org.javassist</groupId>
				<artifactId>javassist</artifactId>
				<version>${javassist_version}</version>
			</dependency>
			<dependency>
			  <groupId>net.bytebuddy</groupId>
			  <artifactId>byte-buddy</artifactId>
			  <version>${byte-buddy_version}</version>
			</dependency>
			<!-- Spring framework -->
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-beans</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-context-support</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-core</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-tx</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-aop</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-jdbc</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework</groupId>
				<artifactId>spring-orm</artifactId>
				<version>${springframework_version}</version>
			</dependency>
			<!-- Client/server system for distributed coordination. -->
			<dependency>
				<groupId>org.apache.zookeeper</groupId>
				<artifactId>zookeeper</artifactId>
				<version>${zookeeper_version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-framework</artifactId>
				<version>${curator_version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-recipes</artifactId>
				<version>${curator_version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-client</artifactId>
				<version>${curator_version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-x-discovery</artifactId>
				<version>${curator_version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.curator</groupId>
				<artifactId>curator-test</artifactId>
				<version>${curator_version}</version>
			</dependency>
			<!-- Netty ssl -->
			<dependency>
				<groupId>io.netty</groupId>
				<artifactId>netty-tcnative-boringssl-static</artifactId>
				<version>${netty_tcnative_boringssl_static_version}</version>
			</dependency>
			<!-- <dependency> <groupId>io.netty</groupId> <artifactId>netty-tcnative</artifactId> 
				<version>${netty_tcnative_version}</version> </dependency> -->
			<!-- gRPC and Protobuf -->
			<dependency>
			  <groupId>io.grpc</groupId>
			  <artifactId>grpc-netty</artifactId>
			  <version>${grpc_version}</version>
			</dependency>
			<dependency>
			  <groupId>io.grpc</groupId>
			  <artifactId>grpc-protobuf</artifactId>
			  <version>${grpc_version}</version>
			</dependency>
			<dependency>
			  <groupId>io.grpc</groupId>
			  <artifactId>grpc-stub</artifactId>
			  <version>${grpc_version}</version>
			</dependency>
			<dependency>
			  <groupId>io.grpc</groupId>
              <artifactId>grpc-grpclb</artifactId>
			  <version>${grpc_version}</version>
			</dependency>
			<dependency>
				  <groupId>io.grpc</groupId>
	              <artifactId>grpc-services</artifactId>
	              <version>${grpc_version}</version>
			</dependency>						
			<dependency>
			    <groupId>com.google.protobuf</groupId>
			    <artifactId>protobuf-java</artifactId>
			    <version>${protobuf_java_version}</version>
			</dependency>
			<!-- Log libs -->
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j_log4j12_version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-log4j12</artifactId>
				<version>${slf4j_log4j12_version}</version>
			</dependency>
			<dependency>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging-api</artifactId>
				<version>${commons_logging_api_version}</version>
			</dependency>
			<dependency>
				<groupId>log4j</groupId>
				<artifactId>log4j</artifactId>
				<version>${log4j_version}</version>
			</dependency>
			<!-- Metrics lib -->
			<dependency>
				<groupId>io.dropwizard.metrics</groupId>
				<artifactId>metrics-core</artifactId>
				<version>${dropwizard_metrics_version}</version>
			</dependency>
			<!-- LRU Cache lib -->
			<dependency>
			    <groupId>com.github.ben-manes.caffeine</groupId>
			    <artifactId>caffeine</artifactId>
			    <version>${caffeine_version}</version>
			</dependency>
			<!-- com.google.http lib -->
	        <dependency>
	            <groupId>com.google.http-client</groupId>
	            <artifactId>google-http-client</artifactId>
	            <version>${google.http.client.version}</version>
	        </dependency>
	        <dependency>
	            <groupId>com.google.api-client</groupId>
	            <artifactId>google-api-client</artifactId>
	            <version>${google.api.client.version}</version>
	        </dependency>			
			<!-- A high-performance JDBC connection pool. http://brettwooldridge.github.io/HikariCP/ -->
			<dependency>
			    <groupId>com.zaxxer</groupId>
			    <artifactId>HikariCP</artifactId>
			    <version>${hikariCP_version}</version>
			</dependency>
			<dependency>
			    <groupId>org.projectlombok</groupId>
			    <artifactId>lombok</artifactId>
			    <version>${lombok_version}</version>
			</dependency>
			<!-- 
			<dependency>
			    <groupId>com.zaxxer</groupId>
			    <artifactId>HikariCP-java6</artifactId>
			    <version>2.3.13</version>
			    <scope>compile</scope>
			</dependency> -->
			<!-- Test libs -->
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>${junit_version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>org.mockito</groupId>
				<artifactId>mockito-all</artifactId>
				<version>${mockito_all_version}</version>
				<scope>test</scope>
			</dependency>
            <dependency>  
            	<groupId>org.springframework</groupId>  
            	<artifactId>spring-test</artifactId>  
            	<version>${springframework_version}</version>
            	<scope>test</scope>  
            </dependency> 
		</dependencies>
	</dependencyManagement>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-all</artifactId>
		</dependency>
		<dependency>
			<groupId>com.github.ibole</groupId>
			<artifactId>infrastructure-common</artifactId>
		</dependency>
	</dependencies>
	<!-- 
	<repositories>
	      <repository>
	          <id>nexus</id>
	          <name>IBole Nexus Repository</name>
	          <url>http://central.maven.org/maven2</url>
	      </repository>
	</repositories> 
	  <pluginRepositories>
	      <pluginRepository>
	          <id>nexus</id>
	          <name>IBole Nexus Repository</name>
	          <url>http://central.maven.org/maven2</url>
	      </pluginRepository>
	  </pluginRepositories>	-->
   <!--
	<repositories>
	      <repository>
	          <id>nexus</id>
	          <name>IBole Nexus Repository</name>
	          <url>http://192.168.1.137:8081/nexus/content/groups/public</url>
	      </repository>
	</repositories>
	  <pluginRepositories>
	      <pluginRepository>
	          <id>nexus</id>
	          <name>IBole Nexus Repository</name>
	          <url>http://192.168.1.137:8081/nexus/content/groups/public</url>
	      </pluginRepository>
	  </pluginRepositories>-->
	<distributionManagement>
	  <repository>
	      <id>ossrh</id>
	      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
	  </repository>
	  <snapshotRepository>
	      <id>ossrh</id>
	      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
	  </snapshotRepository>
	</distributionManagement>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<addMavenDescriptor>true</addMavenDescriptor>
						<index>true</index>
						<manifest>
							<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
							<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<version>${maven_source_plugin_version}</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<phase>package</phase>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		   <plugin>
		      <groupId>org.apache.maven.plugins</groupId>
		      <artifactId>maven-javadoc-plugin</artifactId>
		      <executions>
		        <execution>
		          <id>attach-javadocs</id>
		          <goals>
		            <goal>jar</goal>
		          </goals>
		        </execution>
		      </executions>
		      <configuration> 
		        <additionalparam>-XDignore.symbol.file -Xdoclint:none</additionalparam>
		        <sourceFileExcludes>
			      <exclude>**/*Proto.java</exclude>
                </sourceFileExcludes>
              </configuration>
		    </plugin>
			<plugin>				
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin_version}</version>
	            <executions>
	              <execution>
	                <id>default-test</id>
	                <phase>test</phase>
	                <goals>
	                  <goal>test</goal>
	                </goals>
	                <configuration>
	                    <argLine>${surefireArgLine}</argLine>
	                </configuration>
	              </execution>
	            </executions>
		        <configuration>
		              <argLine>-XX:MaxPermSize=512m</argLine>
		        </configuration>	            
			</plugin>
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>${maven-failsafe-plugin_version}</version>
                <configuration>
                    <forkCount>1</forkCount>
                    <reuseForks>true</reuseForks>
                </configuration>
            </plugin> 
				<plugin>
				    <groupId>org.eluder.coveralls</groupId>
				    <artifactId>coveralls-maven-plugin</artifactId>
				    <version>${maven_coveralls_plugin_version}</version>
				    <configuration>
				        <repoToken>${env.COVERALLS_TOKEN}</repoToken>
				    </configuration>
				</plugin>
				<plugin>
				    <groupId>org.jacoco</groupId>
				    <artifactId>jacoco-maven-plugin</artifactId>
				    <version>${maven_jacoco_plugin_version}</version>
				<executions>
					<!-- Prepare execution with Surefire -->
					<execution>
						<id>pre-unit-test</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
						<configuration>
							<propertyName>surefireArgLine</propertyName>
						</configuration>
					</execution>
					<!-- Generate report after tests are run -->
					<execution>
						<id>post-unit-test</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
				</executions>
				<!-- Specify classes to ignore in code coverage -->
				<!--<configuration>
					<excludes>
						<exclude>**/ui/**</exclude>
						<exclude>**/StartSolverUi**</exclude>
					</excludes>
				</configuration>-->
				</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-deploy-plugin</artifactId>
				<configuration>
					<skip>${skip_maven_deploy}</skip>
				</configuration>
			</plugin>			
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<version>${maven_jar_plugin_version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<version>${maven_war_plugin_version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-install-plugin</artifactId>
					<version>${maven_install_plugin_version}</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>${maven_deploy_plugin_version}</version>
				</plugin>
	          <plugin> 
	            <groupId>org.apache.maven.plugins</groupId> 
	            <artifactId>maven-release-plugin</artifactId> 
	            <version>${maven_release_plugin_version}</version>
	          </plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>${maven_compiler_plugin_version}</version>
					<configuration>
                        <fork>true</fork>
						<source>${java_source_version}</source>
						<target>${java_target_version}</target>
						<encoding>${file_encoding}</encoding>
                      <!--<compilerArgs>
                            <arg>-XX:MaxPermSize=512M</arg>
                        </compilerArgs>  -->  
					</configuration>
				</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>
		             <additionalparam>-Xdoclint:none</additionalparam>
		          </configuration>
			    </plugin>
				<!--This plugin's configuration is used to store Eclipse m2e settings
					only. It has no influence on the Maven build itself. -->
				<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-dependency-plugin
										</artifactId>
										<versionRange>
											[2.8,)
										</versionRange>
										<goals>
											<goal>unpack</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore/>
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>

				<!--<plugin>
				    <groupId>org.codehaus.mojo</groupId>
				    <artifactId>cobertura-maven-plugin</artifactId>
				    <version>${maven_cobertura_plugin_version}</version>
				    <configuration>
				        <format>xml</format>
				        <maxmem>512m</maxmem>
				        <aggregate>true</aggregate>
				    </configuration>
				</plugin>	-->			
			</plugins>
		</pluginManagement>

	</build>


</project>
