<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.kfyty</groupId>
  <artifactId>loveqq-framework</artifactId>
  <version>1.1.5-java8</version>
  <packaging>pom</packaging>
  <name>loveqq-framework</name>
  <description>ioc/aop/jdbc/mvc/javafx framework</description>
  <url>https://github.com/kfyty/kfyty-framework</url>
  <licenses>
    <license>
      <name>GNU GENERAL PUBLIC LICENSE Version 3</name>
      <url>https://www.gnu.org/licenses/gpl-3.0.txt</url>
    </license>
  </licenses>
  <developers>
    <developer>
      <id>kfyty</id>
      <name>kfyty</name>
      <email>kfyty725@hotmail.com</email>
      <url>http://www.kfyty.com</url>
    </developer>
  </developers>
  <modules>
    <module>loveqq-core</module>
    <module>loveqq-boot</module>
    <module>loveqq-data</module>
    <module>loveqq-mvc</module>
    <module>loveqq-javafx</module>
    <module>loveqq-aop</module>
    <module>loveqq-cache</module>
    <module>loveqq-sdk</module>
    <module>loveqq-boot-cloud-bootstrap</module>
    <module>loveqq-boot-starter-logback</module>
    <module>loveqq-boot-starter-datasource</module>
    <module>loveqq-boot-starter-spring-tx</module>
    <module>loveqq-boot-starter-mybatis</module>
    <module>loveqq-boot-starter-validator</module>
    <module>loveqq-boot-starter-tomcat</module>
    <module>loveqq-boot-starter-redisson</module>
    <module>loveqq-boot-starter-quartz</module>
    <module>loveqq-boot-starter-xxl-job</module>
    <module>loveqq-boot-starter-uid-generator</module>
    <module>loveqq-boot-starter-dubbo</module>
    <module>loveqq-boot-starter-feign</module>
    <module>loveqq-boot-starter-config-nacos</module>
    <module>loveqq-boot-starter-discovery-nacos</module>
    <module>loveqq-boot-starter-thymeleaf</module>
    <module>loveqq-boot-starter-pagehelper</module>
    <module>loveqq-boot-starter-shiro</module>
    <module>loveqq-boot-starter-mail</module>
    <module>loveqq-boot-starter-netty</module>
    <module>loveqq-boot-starter-rocketmq</module>
    <module>loveqq-boot-starter-test</module>
  </modules>
  <scm>
    <connection>https://github.com/kfyty/kfyty-framework.git</connection>
    <url>https://github.com/kfyty/kfyty-framework</url>
  </scm>
  <distributionManagement>
    <repository>
      <id>kfyty</id>
      <name>releases</name>
      <url>https://s01.oss.sonatype.org/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>kfyty</id>
      <name>snapshot</name>
      <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  <properties>
    <jackson.version>2.19.1</jackson.version>
    <tomcat.jdbc.version>11.0.0-M15</tomcat.jdbc.version>
    <os.maven.version>1.5.0.Final</os.maven.version>
    <smart.doc.maven.version>3.0.5</smart.doc.maven.version>
    <slf4j.version>2.0.13</slf4j.version>
    <freemarker.version>2.3.30</freemarker.version>
    <mybatis.version>3.5.19</mybatis.version>
    <compiler.plugin.version>3.13.0</compiler.plugin.version>
    <inject.api.version>2.0.1</inject.api.version>
    <oracle14.version>10.2.0.4.0</oracle14.version>
    <servlet.api.version>5.0.0</servlet.api.version>
    <flatten.plugin.version>1.7.0</flatten.plugin.version>
    <reactor.netty.version>1.2.7</reactor.netty.version>
    <asm.version>9.6</asm.version>
    <mssql.version>7.4.0.jre8</mssql.version>
    <aspectj.version>1.9.23</aspectj.version>
    <javadoc.plugin.version>3.5.0</javadoc.plugin.version>
    <ognl.version>3.4.5</ognl.version>
    <snakeyaml.version>2.3</snakeyaml.version>
    <loveqq.framework.version>1.1.5-java8</loveqq.framework.version>
    <lettuce.version>6.6.0.RELEASE</lettuce.version>
    <dependency.plugin.version>3.7.1</dependency.plugin.version>
    <lombok.version>1.18.30</lombok.version>
    <boot-lib-output>boot-lib</boot-lib-output>
    <ant.version>1.10.14</ant.version>
    <redisson-version>3.50.0</redisson-version>
    <k-jte.version>1.0-SNAPSHOT</k-jte.version>
    <source.plugin.version>3.3.1</source.plugin.version>
    <hikari.version>6.3.0</hikari.version>
    <boot-main-class>com.kfyty.loveqq.framework.core.support.BootLauncher</boot-main-class>
    <surefire.plugin.version>3.3.1</surefire.plugin.version>
    <glassfish.jakarta.el.version>4.0.2</glassfish.jakarta.el.version>
    <reactor.core.version>3.7.7</reactor.core.version>
    <junit.version>5.10.3</junit.version>
    <javassist.version>3.30.2-GA</javassist.version>
    <protobuf.java.version>3.23.2</protobuf.java.version>
    <revision>1.1.5-java8</revision>
    <central.publishing.plugin.version>0.7.0</central.publishing.plugin.version>
    <reactive.streams.version>1.0.4</reactive.streams.version>
    <java.websocket.version>1.5.3</java.websocket.version>
    <jstl.version>1.2</jstl.version>
    <mysql.version>8.0.16</mysql.version>
    <maven.target.version>8</maven.target.version>
    <netty.version>4.1.122.Final</netty.version>
    <annotation.api.version>2.1.1</annotation.api.version>
    <hibernate.validator.version>7.0.0.Final</hibernate.validator.version>
    <smart-doc-config>./src/main/resources/smart-doc.json</smart-doc-config>
    <jar.plugin.version>3.4.2</jar.plugin.version>
    <validation.api.version>3.0.2</validation.api.version>
    <maven.source.version>8</maven.source.version>
    <servlet.websocket.api.version>2.1.1</servlet.websocket.api.version>
    <protobuf.maven.version>0.5.1</protobuf.maven.version>
    <antrun.plugin.version>3.1.0</antrun.plugin.version>
    <micrometer.observation.version>1.12.11</micrometer.observation.version>
    <mail.api.version>2.1.3</mail.api.version>
    <jfinal.enjoy.version>5.1.3</jfinal.enjoy.version>
    <commons.compress.version>1.21</commons.compress.version>
    <druid.version>1.2.25</druid.version>
    <gpg.plugin.version>3.2.2</gpg.plugin.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.ow2.asm</groupId>
        <artifactId>asm</artifactId>
        <version>${asm.version}</version>
      </dependency>
      <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>${aspectj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>${javassist.version}</version>
      </dependency>
      <dependency>
        <groupId>ognl</groupId>
        <artifactId>ognl</artifactId>
        <version>${ognl.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-buffer</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core</artifactId>
        <version>${reactor.core.version}</version>
      </dependency>
      <dependency>
        <groupId>io.projectreactor.netty</groupId>
        <artifactId>reactor-netty</artifactId>
        <version>${reactor.netty.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.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>${snakeyaml.version}</version>
      </dependency>
      <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>enjoy</artifactId>
        <version>${jfinal.enjoy.version}</version>
      </dependency>
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>${freemarker.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${commons.compress.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.annotation</groupId>
        <artifactId>jakarta.annotation-api</artifactId>
        <version>${annotation.api.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.inject</groupId>
        <artifactId>jakarta.inject-api</artifactId>
        <version>${inject.api.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
        <version>${validation.api.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.mail</groupId>
        <artifactId>jakarta.mail-api</artifactId>
        <version>${mail.api.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>jakarta.el</artifactId>
        <version>${glassfish.jakarta.el.version}</version>
      </dependency>
      <dependency>
        <groupId>org.hibernate.validator</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>${hibernate.validator.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>${jstl.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>${servlet.api.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.websocket</groupId>
        <artifactId>jakarta.websocket-api</artifactId>
        <version>${servlet.websocket.api.version}</version>
      </dependency>
      <dependency>
        <groupId>jakarta.websocket</groupId>
        <artifactId>jakarta.websocket-client-api</artifactId>
        <version>${servlet.websocket.api.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>${hikari.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jdbc</artifactId>
        <version>${tomcat.jdbc.version}</version>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc14</artifactId>
        <version>${oracle14.version}</version>
      </dependency>
      <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>${mssql.version}</version>
      </dependency>
      <dependency>
        <groupId>org.redisson</groupId>
        <artifactId>redisson</artifactId>
        <version>${redisson-version}</version>
      </dependency>
      <dependency>
        <groupId>io.lettuce</groupId>
        <artifactId>lettuce-core</artifactId>
        <version>${lettuce.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>${mybatis.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.java.version}</version>
      </dependency>
      <dependency>
        <groupId>org.java-websocket</groupId>
        <artifactId>Java-WebSocket</artifactId>
        <version>${java.websocket.version}</version>
      </dependency>
      <dependency>
        <groupId>com.kfyty</groupId>
        <artifactId>k-jte</artifactId>
        <version>${k-jte.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-simple</artifactId>
      <version>${slf4j.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>${lombok.version}</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>${os.maven.version}</version>
      </extension>
    </extensions>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/webapp</directory>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${jar.plugin.version}</version>
          <configuration>
            <archive>
              <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>${boot-lib-output}/</classpathPrefix>
                <mainClass>${boot-main-class}</mainClass>
              </manifest>
              <manifestEntries>
                <Start-Class>${boot-start-class}</Start-Class>
              </manifestEntries>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.ly.smart-doc</groupId>
          <artifactId>smart-doc-maven-plugin</artifactId>
          <version>${smart.doc.maven.version}</version>
          <configuration>
            <configFile>${smart-doc-config}</configFile>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.xolstice.maven.plugins</groupId>
          <artifactId>protobuf-maven-plugin</artifactId>
          <version>${protobuf.maven.version}</version>
          <extensions>true</extensions>
          <executions>
            <execution>
              <phase>compile</phase>
              <goals>
                <goal>compile</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <protocArtifact>com.google.protobuf:protoc:${protobuf.java.version}:exe:${os.detected.classifier}</protocArtifact>
            <protoSourceRoot>${project.basedir}/src/main/resources/proto</protoSourceRoot>
            <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
            <clearOutputDirectory>false</clearOutputDirectory>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>flatten-maven-plugin</artifactId>
        <version>${flatten.plugin.version}</version>
        <executions>
          <execution>
            <id>flatten</id>
            <phase>process-resources</phase>
            <goals>
              <goal>flatten</goal>
            </goals>
          </execution>
          <execution>
            <id>flatten.clean</id>
            <phase>clean</phase>
            <goals>
              <goal>clean</goal>
            </goals>
          </execution>
        </executions>
        <inherited>true</inherited>
        <configuration>
          <updatePomFile>true</updatePomFile>
          <flattenMode>resolveCiFriendliesOnly</flattenMode>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-source-plugin</artifactId>
        <version>${source.plugin.version}</version>
        <executions>
          <execution>
            <id>attach-sources</id>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${compiler.plugin.version}</version>
        <configuration>
          <encoding>UTF-8</encoding>
          <source>${maven.source.version}</source>
          <target>${maven.target.version}</target>
          <parameters>true</parameters>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>${dependency.plugin.version}</version>
        <executions>
          <execution>
            <id>copy-runtime-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <includeScope>runtime</includeScope>
              <outputDirectory>${project.build.directory}/${boot-lib-output}</outputDirectory>
            </configuration>
          </execution>
          <execution>
            <id>copy-system-dependencies</id>
            <phase>package</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <includeScope>system</includeScope>
              <outputDirectory>${project.build.directory}/${boot-lib-output}</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire.plugin.version}</version>
        <configuration>
          <forkCount>1</forkCount>
          <reuseForks>false</reuseForks>
          <argLine>--add-opens=java.base/java.lang=ALL-UNNAMED
                        --add-opens=java.base/java.io=ALL-UNNAMED
                        --add-opens=java.base/java.nio=ALL-UNNAMED
                        --add-opens=java.base/java.util=ALL-UNNAMED
                        --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
                        --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
                        --add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED
                        --add-opens=java.base/jdk.internal.reflect=ALL-UNNAMED
                        --add-opens=java.rmi/java.rmi=ALL-UNNAMED
                        --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
                        --add-opens=java.rmi/sun.rmi.transport.tcp=ALL-UNNAMED</argLine>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>${antrun.plugin.version}</version>
        <executions>
          <execution>
            <id>build configuration metadata</id>
            <phase>verify</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="metadata">
                <java fork="true" classname="com.kfyty.loveqq.framework.core.support.task.BuildConfigurationMetadataAntTask" classpathref="maven.compile.classpath">
                  <arg value="-OUTPUT_TYPE=${project.packaging}" />
                  <arg value="-OUTPUT_DIRECTORY=${project.build.directory}" />
                  <arg value="-OUTPUT_JAR=${project.build.finalName}.jar" />
                  <arg value="-OUTPUT_DEFAULT_JAR=${project.artifactId}-${project.version}.jar" />
                  <jvmarg value="--add-opens=java.base/sun.reflect.annotation=ALL-UNNAMED" />
                </java>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>build jar index</id>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target name="jar_index" if="boot-start-class">
                <java classname="com.kfyty.loveqq.framework.core.support.task.BuildJarIndexAntTask" classpathref="maven.compile.classpath">
                  <arg value="-OUTPUT_TYPE=${project.packaging}" />
                  <arg value="-OUTPUT_DIRECTORY=${project.build.directory}" />
                  <arg value="-OUTPUT_JAR=${project.build.finalName}.jar" />
                  <arg value="-OUTPUT_DEFAULT_JAR=${project.artifactId}-${project.version}.jar" />
                </java>
              </target>
            </configuration>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>${ant.version}</version>
          </dependency>
        </dependencies>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>dev</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    </profile>
    <profile>
      <id>deploy</id>
      <build>
        <plugins>
          <plugin>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>${javadoc.plugin.version}</version>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
                <configuration>
                  <additionalJOption>-Xdoclint:none</additionalJOption>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>${gpg.plugin.version}</version>
            <executions>
              <execution>
                <id>sign-artifacts</id>
                <phase>verify</phase>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.sonatype.central</groupId>
            <artifactId>central-publishing-maven-plugin</artifactId>
            <version>${central.publishing.plugin.version}</version>
            <extensions>true</extensions>
            <configuration>
              <publishingServerId>kfyty</publishingServerId>
              <autoPublish>true</autoPublish>
              <waitUntil>published</waitUntil>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
