<?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>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.0.13</version>
	</parent>
	<groupId>com.plmc</groupId>
	<artifactId>parent-pom</artifactId>
	<version>1.0.1-SNAPSHOT</version>
	<name>parent-pom</name>
	<url>http://maven.apache.org</url>
	<packaging>pom</packaging>
	<properties>
		<!-- Java & Encoding -->
		<java.version>21</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>
		<!-- Spring Framework -->
		<spring-cloud.version>2022.0.5</spring-cloud.version>
		<spring-data-mongodb.version>4.0.5</spring-data-mongodb.version>
		<!-- Log -->
		<logstash.logback.version>7.4</logstash.logback.version>
		<logback.classic.version>1.4.14</logback.classic.version>
		<log4j.version>2.22.1</log4j.version>
		<!-- Jackson & JSON -->
		<jackson.version>2.15.3</jackson.version>
		<gson.version>2.10.1</gson.version>
		<!-- Database -->
		<mysql-connector.version>8.0.33</mysql-connector.version>
		<mongodb-driver.version>4.11.1</mongodb-driver.version>
		<!-- Elasticsearch -->
		<elasticsearch.version>7.17.15</elasticsearch.version>
		<!-- Other Libraries -->
		<javassist.version>3.29.2-GA</javassist.version>
		<objenesis.version>3.3</objenesis.version>
		<xstream.version>1.4.21</xstream.version>
		<!-- Maven Plugins -->
		<docker-maven-plugin.version>1.2.2</docker-maven-plugin.version>
		<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>net.logstash.logback</groupId>
			<artifactId>logstash-logback-encoder</artifactId>
			<version>${logstash.logback.version}</version>
		</dependency>
		
		<dependency>
		    <groupId>org.objenesis</groupId>
		    <artifactId>objenesis</artifactId>
		    <version>${objenesis.version}</version>
		</dependency>
	</dependencies>

	<dependencyManagement>	
		<dependencies>
			<dependency>
				<groupId>org.springframework.data</groupId>
				<artifactId>spring-data-mongodb</artifactId>
				<version>${spring-data-mongodb.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.mongodb</groupId>
				<artifactId>mongodb-driver-sync</artifactId>
				<version>${mongodb-driver.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.mongodb</groupId>
				<artifactId>mongodb-driver-core</artifactId>
				<version>${mongodb-driver.version}</version>
			</dependency>

			<dependency>
			    <groupId>org.apache.logging.log4j</groupId>
			    <artifactId>log4j-1.2-api</artifactId>
			    <version>${log4j.version}</version>
			</dependency>
			
			<dependency>
			  	<groupId>org.apache.logging.log4j</groupId>
			  	<artifactId>log4j-api</artifactId>
			  	<version>${log4j.version}</version>
			</dependency>
			
			<dependency>
			  	<groupId>org.apache.logging.log4j</groupId>
			  	<artifactId>log4j-core</artifactId>
			  	<version>${log4j.version}</version>
			</dependency>
			
			<dependency>
			  	<groupId>org.apache.logging.log4j</groupId>
			  	<artifactId>log4j-slf4j-impl</artifactId>
			  	<version>${log4j.version}</version>
			</dependency>
			
            <dependency>
			    <groupId>com.mysql</groupId>
			    <artifactId>mysql-connector-j</artifactId>
			    <version>${mysql-connector.version}</version>
			</dependency>
			
			<dependency>
				<groupId>org.elasticsearch.client</groupId>
				<artifactId>elasticsearch-rest-high-level-client</artifactId>
				<version>${elasticsearch.version}</version>
				<exclusions>
					<exclusion>
						<groupId>org.elasticsearch</groupId>
						<artifactId>elasticsearch</artifactId>
					</exclusion>
					<exclusion>
						<groupId>org.elasticsearch.client</groupId>
						<artifactId>elasticsearch-rest-client</artifactId>
					</exclusion>
				</exclusions>
			</dependency>
	
			<dependency>
				<groupId>org.elasticsearch</groupId>
				<artifactId>elasticsearch</artifactId>
				<version>${elasticsearch.version}</version>
			</dependency>
			
			<dependency>
			    <groupId>org.elasticsearch.client</groupId>
			    <artifactId>elasticsearch-rest-client</artifactId>
			    <version>${elasticsearch.version}</version>
			</dependency>
			
			<dependency>
				<groupId>ch.qos.logback</groupId>
				<artifactId>logback-classic</artifactId>
				<version>${logback.classic.version}</version>
			</dependency>

			<dependency>
				<groupId>org.javassist</groupId>
				<artifactId>javassist</artifactId>
				<version>${javassist.version}</version>
			</dependency>

			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${jackson.version}</version>
			</dependency>

			<dependency>
				<groupId>com.fasterxml.jackson.datatype</groupId>
				<artifactId>jackson-datatype-jsr310</artifactId>
				<version>${jackson.version}</version>
			</dependency>

			<dependency>
				<groupId>com.google.code.gson</groupId>
				<artifactId>gson</artifactId>
				<version>${gson.version}</version>
			</dependency>

			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>${spring-cloud.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			
			<dependency>
			    <groupId>com.thoughtworks.xstream</groupId>
			    <artifactId>xstream</artifactId>
			    <version>${xstream.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<resources>
			<resource>
				<directory>${project.basedir}/src/main/webapp</directory>
				<targetPath>META-INF/resources</targetPath>
				<includes>
					<include>**/**</include>
				</includes>
			</resource>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<filtering>true</filtering>
				<includes>
					<include>**/*.yml</include>
					<include>**/*.xml</include>
					<include>**/*</include>
				</includes>
				<excludes>
	                <exclude>**/*.ttf</exclude>
	                <exclude>**/*.woff</exclude>
	                <exclude>**/*.woff2</exclude>
	                <exclude>**/*.mmdb</exclude>
	                <exclude>**/*.bcmap</exclude>
	            </excludes>
			</resource>
			<resource>
				<directory>${project.basedir}/src/main/resources</directory>
				<filtering>false</filtering>
				<includes>
					<include>**/*.ttf</include>
					<include>**/*.woff</include>
					<include>**/*.woff2</include>
                	<include>**/*.xls</include>
	                <include>**/*.xlsx</include>
	                <include>**/*.doc</include>
	                <include>**/*.docx</include>
	                <include>**/*.mmdb</include>
	                <include>**/*.bcmap</include>
				</includes>
			</resource>
			<resource>
				<directory>${project.basedir}/src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
				<directory>${project.basedir}/src/test/</directory>
				<excludes>
					<exclude>**/*</exclude>
				</excludes>
			</resource>
		</resources>
 
		<plugins>
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>${docker-maven-plugin.version}</version>
				<configuration>
					<imageName>harbor.17elian.com/elian/${project.name}</imageName>
					<baseImage>harbor.17elian.com/base/openjdk:17</baseImage>
					<imageTags>${project.version}-${buildtime}</imageTags>
					<entryPoint>["sh", "-c", "java $JAVA_OPTS -Dlog4j2.formatMsgNoLookups=true -jar ${project.name}-${project.version}.jar --spring.cloud.config.profile=${config_profile}"]</entryPoint>
					<env>
						<spring.cloud.config.label>master</spring.cloud.config.label>
						<spring.cloud.config.discovery.enabled>true</spring.cloud.config.discovery.enabled>
						<spring.cloud.config.discovery.serviceId>ejc-configserver</spring.cloud.config.discovery.serviceId>
						<spring.cloud.config.profile>${config_profile}</spring.cloud.config.profile>
						<log.appender>stash</log.appender>
					</env>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.name}-${project.version}.jar</include>
						</resource>
					</resources>
					<serverId>docker_registry</serverId>
					<registryUrl>https://harbor.17elian.com</registryUrl>
					<nonFilteredFileExtensions>
			             <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
			             <nonFilteredFileExtension>woff</nonFilteredFileExtension>
			             <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
			             <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
			             <nonFilteredFileExtension>docx</nonFilteredFileExtension>
			             <nonFilteredFileExtension>mmdb</nonFilteredFileExtension>
			         </nonFilteredFileExtensions>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>build-helper-maven-plugin</artifactId>
				<executions>
					<execution>
						<id>timestamp-property</id>
						<goals>
							<goal>timestamp-property</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<name>buildtime</name>
					<pattern>yyyyMMddHHmm</pattern>
					<timeZone>GMT+8</timeZone>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-source-plugin</artifactId>
				<executions>
					<execution>
						<goals>
							<goal>jar</goal>
						</goals>
					</execution>

				</executions>
			</plugin>
			<plugin>
			    <groupId>org.apache.maven.plugins</groupId>
			    <version>${maven-resources-plugin.version}</version>
			    <artifactId>maven-resources-plugin</artifactId>
			    <configuration>
			         <encoding>UTF-8</encoding>
			         <nonFilteredFileExtensions>
			             <nonFilteredFileExtension>ttf</nonFilteredFileExtension>
			             <nonFilteredFileExtension>woff</nonFilteredFileExtension>
			             <nonFilteredFileExtension>woff2</nonFilteredFileExtension>
			             <nonFilteredFileExtension>xlsx</nonFilteredFileExtension>
			             <nonFilteredFileExtension>docx</nonFilteredFileExtension>
			             <nonFilteredFileExtension>mmdb</nonFilteredFileExtension>
			         </nonFilteredFileExtensions>
			    </configuration>
			</plugin>
		</plugins>
	</build>

	<repositories>
		<repository>
			<id>ejc-nexus</id>
			<url>https://maven.17elian.com/nexus/content/groups/public/</url>
			<snapshots>
				<updatePolicy>always</updatePolicy>
			</snapshots>
		</repository>
	</repositories>
	<distributionManagement>
		<repository>
			<id>releases</id>
			<url>https://maven.17elian.com/nexus/content/repositories/releases</url>
		</repository>
		<snapshotRepository>
			<id>snapshots</id>
			<url>https://maven.17elian.com/nexus/content/repositories/snapshots</url>
		</snapshotRepository>
	</distributionManagement>

</project>