<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>org.dromara</groupId>
	<artifactId>northstar</artifactId>
	<version>6.1.0.Beta</version>
	<name>northstar</name>
	<packaging>pom</packaging>
	<description>盈富量化交易平台</description>
	<url>https://gitee.com/dromara/northstar</url>

	<properties>
		<java.version>17</java.version>
		<argLine>-Dfile.encoding=UTF-8</argLine>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>
		<northstar-version>${project.version}</northstar-version>
		<springboot-version>2.6.14</springboot-version>
		<lombok-version>1.18.26</lombok-version>
		<slf4j-version>1.7.25</slf4j-version>
		<commons-lang3-version>3.7</commons-lang3-version>
		<commons-codec-version>1.13</commons-codec-version>
		<commons-io-version>2.6</commons-io-version>
		<commons-math-version>3.6.1</commons-math-version>
		<fastjson-version>2.0.4</fastjson-version>
		<guava-version>30.1-jre</guava-version>
		<protobuf-version>3.19.1</protobuf-version>
		<protobuf-java-format-version>1.4</protobuf-java-format-version>
		<disruptor-version>3.4.2</disruptor-version>
		<jwt-version>3.5.0</jwt-version>
		<servlet-version>3.1.0</servlet-version>
		<netty-socketio-version>1.7.19</netty-socketio-version>
		<socketio-client-version>1.0.0</socketio-client-version>
		<hutool-version>5.7.22</hutool-version>
		<jackson-version>2.12.5</jackson-version>
		<byte-buddy-version>1.10.20</byte-buddy-version>
		<netty-version>4.1.69.Final</netty-version>
		<h2-version>2.1.214</h2-version>
	</properties>

	<modules>
		<module>northstar-external-archetype</module>
		<module>northstar-monitor</module>
		<module>northstar-api</module>
		<module>northstar-gateway-sim</module>
		<module>northstar-gateway-playback</module>
		<module>northstar-strategy-example</module>
		<module>northstar-main</module>
	</modules>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<version>${springboot-version}</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-api</artifactId>
				<version>${northstar-version}</version>
			</dependency>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-gateway-common</artifactId>
				<version>${northstar-version}</version>
			</dependency>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-strategy-example</artifactId>
				<version>${northstar-version}</version>
			</dependency>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-gateway-sim</artifactId>
				<version>${northstar-version}</version>
			</dependency>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-gateway-playback</artifactId>
				<version>${northstar-version}</version>
			</dependency>
			<dependency>
				<groupId>org.dromara</groupId>
				<artifactId>northstar-main</artifactId>
				<version>${northstar-version}</version>
			</dependency>

			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-aop</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-web</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-mail</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
			   <groupId>org.springframework.boot</groupId>
			   <artifactId>spring-boot-starter-data-jpa</artifactId>
			   <version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-configuration-processor</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-data-redis</artifactId>
				<version>${springboot-version}</version>
			</dependency>
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-lang3</artifactId>
				<version>${commons-lang3-version}</version>
			</dependency>
			<dependency>
		        <groupId>com.h2database</groupId>
		        <artifactId>h2</artifactId>
		        <version>${h2-version}</version>
		        <scope>runtime</scope>
		    </dependency>
			<dependency>
				<groupId>org.projectlombok</groupId>
				<artifactId>lombok</artifactId>
				<version>${lombok-version}</version>
			</dependency>
			<dependency>
				<groupId>org.slf4j</groupId>
				<artifactId>slf4j-api</artifactId>
				<version>${slf4j-version}</version>
			</dependency>
			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons-codec-version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>${guava-version}</version>
			</dependency>
			<dependency>
			    <groupId>org.springframework.retry</groupId>
			    <artifactId>spring-retry</artifactId>
			    <version>2.0.1</version>
			</dependency>
			<dependency>
			    <groupId>com.squareup.okhttp3</groupId>
			    <artifactId>okhttp</artifactId>
			    <version>4.10.0</version>
			</dependency>
			<dependency>
			    <groupId>javax.xml.bind</groupId>
			    <artifactId>jaxb-api</artifactId>
			    <version>2.3.1</version>
			</dependency>
			<dependency>
			    <groupId>org.springframework</groupId>
			    <artifactId>spring-web</artifactId>
			    <version>5.3.27</version>
			</dependency>
			<dependency>
			    <groupId>com.squareup.retrofit2</groupId>
			    <artifactId>retrofit</artifactId>
			    <version>2.9.0</version>
			</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>com.auth0</groupId>
				<artifactId>java-jwt</artifactId>
				<version>${jwt-version}</version>
			</dependency>
			<dependency>
				<groupId>commons-io</groupId>
				<artifactId>commons-io</artifactId>
				<version>${commons-io-version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.protobuf</groupId>
				<artifactId>protobuf-java</artifactId>
				<version>${protobuf-version}</version>
			</dependency>
			<dependency>
				<groupId>com.google.protobuf</groupId>
				<artifactId>protobuf-java-util</artifactId>
				<version>${protobuf-version}</version>
			</dependency>
			<dependency>
				<groupId>com.googlecode.protobuf-java-format</groupId>
				<artifactId>protobuf-java-format</artifactId>
				<version>${protobuf-java-format-version}</version>
			</dependency>
			<dependency>
				<groupId>com.lmax</groupId>
				<artifactId>disruptor</artifactId>
				<version>${disruptor-version}</version>
			</dependency>
			<dependency>
				<groupId>com.corundumstudio.socketio</groupId>
				<artifactId>netty-socketio</artifactId>
				<version>${netty-socketio-version}</version>
			</dependency>
			<dependency>
				<groupId>io.socket</groupId>
				<artifactId>socket.io-client</artifactId>
				<version>${socketio-client-version}</version>
			</dependency>
			<dependency>
				<groupId>com.alibaba</groupId>
				<artifactId>fastjson</artifactId>
				<version>${fastjson-version}</version>
			</dependency>
			<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-crypto -->
			<dependency>
				<groupId>cn.hutool</groupId>
				<artifactId>hutool-crypto</artifactId>
				<version>${hutool-version}</version>
			</dependency>
			<dependency>
				<groupId>cn.hutool</groupId>
				<artifactId>hutool-core</artifactId>
				<version>${hutool-version}</version>
			</dependency>
			<!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy -->
			<dependency>
			    <groupId>net.bytebuddy</groupId>
			    <artifactId>byte-buddy</artifactId>
			    <version>${byte-buddy-version}</version>
			</dependency>
			<!-- https://mvnrepository.com/artifact/net.bytebuddy/byte-buddy-agent -->
			<dependency>
			    <groupId>net.bytebuddy</groupId>
			    <artifactId>byte-buddy-agent</artifactId>
			    <version>${byte-buddy-version}</version>
			    <scope>test</scope>
			</dependency>
			<!--用于数据计算的数学工具包 拟合函数，聚类函数，矩阵，积分等 -->
			<dependency>
				<groupId>org.apache.commons</groupId>
				<artifactId>commons-math3</artifactId>
				<version>${commons-math-version}</version>
			</dependency>
			<!-- netty -->
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-common</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-buffer</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-transport</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-transport-native-epoll</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-resolver</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-codec</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-codec-http</artifactId>
			    <version>${netty-version}</version>
			</dependency>
			<dependency>
			    <groupId>io.netty</groupId>
			    <artifactId>netty-handler</artifactId>
			    <version>${netty-version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<issueManagement>
		<system>Gitee Issue</system>
		<url>https://gitee.com/dromara/northstar/issues</url>
	</issueManagement>

	<organization>
		<name>dromara</name>
		<url>https://dromara.org</url>
	</organization>

	<licenses>
		<license>
			<name>GPL-3.0</name>
			<url>https://gitee.com/dromara/northstar/blob/master/LICENSE</url>
		</license>
	</licenses>

	<scm>
		<connection>scm:git@gitee.com:dromara/northstar.git</connection>
		<developerConnection>scm:git@gitee.com:dromara/northstar.git</developerConnection>
		<url>git@gitee.com:dromara/northstar.git</url>
	</scm>

	<developers>
		<developer>
			<name>KevinHuangwl</name>
			<email>kevinbauer@163.com</email>
			<organization>dromara.org</organization>
			<roles>
				<role>author</role>
			</roles>
		</developer>
	</developers>
	
	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>
	
	<profiles>
		<profile>
		    <id>ossrh</id>
		    <build>
		      <plugins>
		        <plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-gpg-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-javadoc-plugin</artifactId>
				</plugin>
		      </plugins>
		    </build>
		  </profile>
	</profiles>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>versions-maven-plugin</artifactId>
				<version>2.7</version>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
				    <artifactId>maven-clean-plugin</artifactId>
				    <version>2.4.1</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-gpg-plugin</artifactId>
					<version>1.5</version>
					<executions>
						<execution>
							<id>ossrh</id>
							<phase>verify</phase>
							<goals>
								<goal>sign</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-source-plugin</artifactId>
					<version>3.2.1</version>
					<executions>
						<execution>
							<id>ossrh</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>
					<version>3.4.0</version>
					<configuration>
						<additionalOptions>-Xdoclint:none</additionalOptions>
						<tags>
							<tag>
								<name>apiNote</name>
								<placement>a</placement>
								<head>API Note:</head>
							</tag>
							<tag>
								<name>implSpec</name>
								<placement>a</placement>
								<head>Implementation Requirements:</head>
							</tag>
							<tag>
								<name>implNote</name>
								<placement>a</placement>
								<head>Implementation Note:</head>
							</tag>
							<tag>
								<name>inheritDoc</name>
								<placement>a</placement>
								<head>Implementation Note:</head>
							</tag>
							<tag>
								<name>param</name>
							</tag>
							<tag>
								<name>return</name>
							</tag>
							<tag>
								<name>throws</name>
							</tag>
							<tag>
								<name>since</name>
							</tag>
							<tag>
								<name>version</name>
							</tag>
							<tag>
								<name>serialData</name>
							</tag>
							<tag>
								<name>see</name>
							</tag>
						</tags>
					</configuration>
					<executions>
						<execution>
							<phase>package</phase>
							<goals>
								<goal>jar</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-resources-plugin</artifactId>
        			<version>3.2.0</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
						<encoding>UTF-8</encoding>
						<compilerArgs>
							<arg>-parameters</arg>
						</compilerArgs>
						<parameters>true</parameters>
					</configuration>
				</plugin>
				<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-failsafe-plugin -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
				    <artifactId>maven-failsafe-plugin</artifactId>
				    <version>3.0.0-M5</version>
					<executions>
						<execution>
							<goals>
								<goal>integration-test</goal>
								<goal>verify</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<classesDirectory>${project.build.outputDirectory}</classesDirectory>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-jar-plugin</artifactId>
					<configuration>
						<archive>
							<manifest>
								<mainClass>${start-class}</mainClass>
								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							</manifest>
						</archive>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<configuration>
						<archive>
							<manifest>
								<mainClass>${start-class}</mainClass>
								<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
							</manifest>
						</archive>
					</configuration>
				</plugin>
				<plugin>
					<groupId>pl.project13.maven</groupId>
					<artifactId>git-commit-id-plugin</artifactId>
					<executions>
						<execution>
							<goals>
								<goal>revision</goal>
							</goals>
						</execution>
					</executions>
					<configuration>
						<verbose>true</verbose>
						<dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
						<generateGitPropertiesFile>true</generateGitPropertiesFile>
						<generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.springframework.boot</groupId>
				    <artifactId>spring-boot-maven-plugin</artifactId>
				    <version>2.6.4</version>
					<executions>
						<execution>
							<id>repackage</id>
							<goals>
								<goal>repackage</goal>
							</goals>
						</execution>
						<execution>
				          <goals>
				            <goal>build-info</goal>
				          </goals>
				        </execution>
					</executions>
					<configuration>
						<mainClass>${start-class}</mainClass>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<configuration>
						<keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
						<createDependencyReducedPom>true</createDependencyReducedPom>
						<filters>
							<filter>
								<artifact>*:*</artifact>
								<excludes>
									<exclude>META-INF/*.SF</exclude>
									<exclude>META-INF/*.DSA</exclude>
									<exclude>META-INF/*.RSA</exclude>
								</excludes>
							</filter>
						</filters>
					</configuration>
					<dependencies>
						<dependency>
							<groupId>org.springframework.boot</groupId>
							<artifactId>spring-boot-maven-plugin</artifactId>
							<version>2.4.5</version>
						</dependency>
					</dependencies>
					<executions>
						<execution>
							<phase>package</phase>
							<goals>
								<goal>shade</goal>
							</goals>
							<configuration>
								<transformers>
									<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
										<resource>META-INF/spring.handlers</resource>
									</transformer>
									<transformer
										implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
										<resource>META-INF/spring.factories</resource>
									</transformer>
									<transformer
										implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
										<resource>META-INF/spring.schemas</resource>
									</transformer>
									<transformer
										implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
									<transformer
										implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
										<mainClass>${start-class}</mainClass>
									</transformer>
								</transformers>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>0.8.7</version>
					<executions>
						<execution>
							<id>default-prepare-agent</id>
							<goals>
								<goal>prepare-agent</goal>
							</goals>
						</execution>
						<execution>
							<id>default-prepare-agent-integration</id>
							<goals>
								<goal>prepare-agent-integration</goal>
							</goals>
						</execution>
						<execution>
							<id>default-report</id>
							<goals>
								<goal>report</goal>
							</goals>
						</execution>
						<execution>
							<id>default-report-integration</id>
							<goals>
								<goal>report-integration</goal>
							</goals>
						</execution>
						<execution>
							<id>report-aggregation</id>
							<phase>verify</phase>
							<goals>
								<goal>report-aggregate</goal>
							</goals>
						</execution>
						<execution>
							<id>default-check</id>
							<goals>
								<goal>check</goal>
							</goals>
							<configuration>
								<rules>
									<rule>
										<element>BUNDLE</element>
										<limits>
											<limit>
												<counter>LINE</counter>
												<value>COVEREDRATIO</value>
												<minimum>0.5</minimum>
											</limit>
										</limits>
									</rule>
								</rules>
							</configuration>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.22.2</version>
					<dependencies>
						<dependency>
							<groupId>org.junit.platform</groupId>
							<artifactId>junit-platform-surefire-provider</artifactId>
							<version>1.3.2</version>
						</dependency>
					</dependencies>
				</plugin>
				<plugin>
				    <groupId>org.codehaus.mojo</groupId>
				    <artifactId>exec-maven-plugin</artifactId>
				    <version>1.6.0</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>
