<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xmlns="http://maven.apache.org/POM/4.0.0"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.xunhong</groupId>
	<artifactId>ERPTurbo</artifactId>
	<version>1.0.0-SNAPSHOT</version>
	<packaging>pom</packaging>
	<description>A ERP Turbo</description>

	<properties>
		<java.version>21</java.version>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8
		</project.reporting.outputEncoding>
		<java.version>21</java.version>
		<spring-boot.version>3.4.5</spring-boot.version>
		<spring-cloud.version>2024.0.1</spring-cloud.version>
		<spring-cloud-alibaba.version>2023.0.3.3</spring-cloud-alibaba.version>
		<dubbo.version>3.2.10</dubbo.version>
		<cola.components.version>5.0.0</cola.components.version>
	</properties>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.4.5</version>
		<relativePath/>
	</parent>

	<modules>
		<!--    公共业务模块    -->
		<module>erp-turbo-common</module>

		<!--    鉴权    -->
		<module>erp-turbo-auth</module>
		<!--    定时任务    -->
		<module>erp-turbo-schedule</module>

		<!--    运营管理端    -->
		<module>erp-turbo-admin</module>
		<module>erp-turbo-business</module>

		<module>erp-turbo-svc</module>
	</modules>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>com.alibaba.cola</groupId>
				<artifactId>cola-components-bom</artifactId>
				<version>${cola.components.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</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.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>${spring-cloud-alibaba.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<dependency>
				<groupId>org.springframework.ai</groupId>
				<artifactId>spring-ai-bom</artifactId>
				<version>1.0.3</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

			<dependency>
				<groupId>org.projectlombok</groupId>
				<artifactId>lombok</artifactId>
				<version>1.18.30</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-base</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-datasource</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-job</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-rpc</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-swagger</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-cache</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-file</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-web</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-sa-token</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-limiter</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-config</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-ai</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-api</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-apm</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-logback</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-weixin</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-dify</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-schedule</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-captcha</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-quartz</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-user</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-rbac</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-infra</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-facade</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-auth</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>com.xunhong</groupId>
				<artifactId>erp-turbo-admin</artifactId>
				<version>${project.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.dubbo</groupId>
				<artifactId>dubbo-spring-boot-starter</artifactId>
				<version>${dubbo.version}</version>
			</dependency>

			<dependency>
				<groupId>org.apache.dubbo</groupId>
				<artifactId>dubbo-registry-nacos</artifactId>
				<version>${dubbo.version}</version>
			</dependency>

			<dependency>
				<groupId>com.alibaba.fastjson2</groupId>
				<artifactId>fastjson2</artifactId>
				<version>2.0.42</version>
			</dependency>

			<dependency>
				<groupId>com.google.guava</groupId>
				<artifactId>guava</artifactId>
				<version>32.1.3-jre</version>
			</dependency>

			<dependency>
				<groupId>org.mapstruct</groupId>
				<artifactId>mapstruct</artifactId>
				<version>1.5.5.Final</version>
			</dependency>

			<dependency>
				<groupId>org.mapstruct</groupId>
				<artifactId>mapstruct-processor</artifactId>
				<version>1.5.5.Final</version>
			</dependency>

			<dependency>
				<groupId>cn.monitor4all</groupId>
				<artifactId>log-record-springboot3-starter</artifactId>
				<version>1.6.2</version>
			</dependency>

			<!--    sensitive    -->
			<dependency>
				<groupId>com.github.houbb</groupId>
				<artifactId>sensitive-logback</artifactId>
				<version>1.7.0</version>
			</dependency>

			<dependency>
				<groupId>com.github.houbb</groupId>
				<artifactId>sensitive-core</artifactId>
				<version>1.7.0</version>
			</dependency>

		</dependencies>
	</dependencyManagement>

	<dependencies>
		<dependency>
			<groupId>com.guardsquare</groupId>
			<artifactId>proguard-base</artifactId>
			<version>7.1.1</version>
		</dependency>

		<dependency>
			<groupId>com.guardsquare</groupId>
			<artifactId>proguard-retrace</artifactId>
			<version>7.1.1</version>
		</dependency>
	</dependencies>
	<!-- 设置 jitpack.io 插件仓库 -->
	<!--	<pluginRepositories>-->
	<!--		<pluginRepository>-->
	<!--			<id>jitpack.io</id>-->
	<!--			<url>https://jitpack.io</url>-->
	<!--		</pluginRepository>-->
	<!--	</pluginRepositories>-->
	<!-- 添加 XJar Maven 插件 -->

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.11.0</version>
				<configuration>
					<source>21</source>
					<target>21</target>
					<annotationProcessorPaths>
						<path>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
							<version>1.18.30</version>
						</path>
						<path>
							<groupId>org.mapstruct</groupId>
							<artifactId>mapstruct-processor</artifactId>
							<version>1.5.5.Final</version>
						</path>
					</annotationProcessorPaths>
				</configuration>
			</plugin>

			<!--			<plugin>-->
			<!--				<groupId>com.github.wvengen</groupId>-->
			<!--				<artifactId>proguard-maven-plugin</artifactId>-->
			<!--				<version>2.6.0</version>-->
			<!--				<executions>-->
			<!--					&lt;!&ndash; 以下配置说明执行mvn的package命令时候，会执行proguard&ndash;&gt;-->
			<!--					<execution>-->
			<!--						<phase>package</phase>-->
			<!--						<goals>-->
			<!--							<goal>proguard</goal>-->
			<!--						</goals>-->
			<!--					</execution>-->
			<!--				</executions>-->
			<!--				<configuration>-->
			<!--					&lt;!&ndash; 就是输入Jar的名称，我们要知道，代码混淆其实是将一个原始的jar，生成一个混淆后的jar，那么就会有输入输出。 &ndash;&gt;-->
			<!--					<injar>${project.build.finalName}.jar</injar>-->
			<!--					&lt;!&ndash; 输出jar名称，输入输出jar同名的时候就是覆盖，也是比较常用的配置。 &ndash;&gt;-->
			<!--					<outjar>${project.build.finalName}.jar</outjar>-->
			<!--					&lt;!&ndash; 是否混淆 默认是true &ndash;&gt;-->
			<!--					<obfuscate>true</obfuscate>-->
			<!--					&lt;!&ndash; 配置一个文件，通常叫做proguard.cfg,该文件主要是配置options选项，也就是说使用proguard.cfg那么options下的所有内容都可以移到proguard.cfg中 &ndash;&gt;-->
			<!--					<proguardInclude>${project.basedir}/proguard.cfg-->
			<!--					</proguardInclude>-->
			<!--					&lt;!&ndash; 额外的jar包，通常是项目编译所需要的jar &ndash;&gt;-->
			<!--					<libs>-->
			<!--						<lib>${java.home}/lib/rt.jar</lib>-->
			<!--						<lib>${java.home}/lib/jce.jar</lib>-->
			<!--						<lib>${java.home}/lib/jsse.jar</lib>-->
			<!--					</libs>-->
			<!--					&lt;!&ndash; 对输入jar进行过滤比如，如下配置就是对META-INFO文件不处理。 &ndash;&gt;-->
			<!--					<inLibsFilter>!META-INF/**,!META-INF/versions/9/**.class-->
			<!--					</inLibsFilter>-->
			<!--					&lt;!&ndash; 这是输出路径配置，但是要注意这个路径必须要包括injar标签填写的jar &ndash;&gt;-->
			<!--					<outputDirectory>${project.basedir}/target</outputDirectory>-->
			<!--					&lt;!&ndash;这里特别重要，此处主要是配置混淆的一些细节选项，比如哪些类不需要混淆，哪些需要混淆&ndash;&gt;-->
			<!--					<options>-->
			<!--						&lt;!&ndash; 可以在此处写option标签配置，不过我上面使用了proguardInclude，故而我更喜欢在proguard.cfg中配置 &ndash;&gt;-->
			<!--					</options>-->
			<!--				</configuration>-->
			<!--			</plugin>-->

			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.1.0</version>
				<configuration>
					<nonFilteredFileExtensions>
						<nonFilteredFileExtension>p12</nonFilteredFileExtension>
						<nonFilteredFileExtension>pem</nonFilteredFileExtension>
					</nonFilteredFileExtensions>
				</configuration>
			</plugin>
		</plugins>

		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>*/**</include>
					<!--                    <include>**/*.*</include>-->
					<!--                    <include>**/*/*.*</include>-->
				</includes>
				<filtering>true</filtering>
			</resource>
		</resources>
	</build>
</project>
