You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
slms/docs/SLMS_MultiAPP_Package.xml

162 lines
6.3 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!--
========================================
SLMS 四端应用打包配置
Smart Library Management System - Multi-Application Package Configuration
========================================
文件说明:
- 这是 Maven pom.xml 的 <profiles> 子节点配置
- 定义了 CLI、GUI、Web 三端应用的打包配置
- Android 应用使用 Gradle 构建,配置在 android/build.gradle
使用方法:
1. 将此文件中的 <profile> 节点复制到项目 pom.xml 的 <profiles> 标签内
2. 根据实际情况修改 mainClass 等配置
3. 使用 mvn clean package -P <profile-id> 命令打包
示例:
- CLI 打包: mvn clean package -P cli -DskipTests
- GUI 打包: mvn clean package -P gui -DskipTests
- Web 打包: mvn clean package -P web -DskipTests
版本: 1.0
日期: 2025-11-20
========================================
-->
<profiles>
<!-- ========================================
CLI 应用打包配置 (JAR)
使用: mvn clean package -P cli
======================================== -->
<profile>
<id>cli</id>
<build>
<finalName>slms-cli</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.smartlibrary.cli.CLIApplication</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 复制依赖到 lib 目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.6.0</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ========================================
GUI 应用打包配置 (JAR + EXE)
使用: mvn clean package -P gui
======================================== -->
<profile>
<id>gui</id>
<build>
<finalName>slms-gui</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifest>
<mainClass>com.smartlibrary.gui.GUIApplication</mainClass>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
<!-- 使用 maven-shade-plugin 打包所有依赖到一个 JAR -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.smartlibrary.gui.GUIApplication</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- ========================================
Web 应用打包配置 (WAR)
使用: mvn clean package -P web
======================================== -->
<profile>
<id>web</id>
<build>
<finalName>slms-web</finalName>
<plugins>
<!-- Spring Boot Maven Plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.smartlibrary.web.WebApplication</mainClass>
</configuration>
</plugin>
<!-- Maven WAR Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>