Java Maven 项目 Skill 模板
以下是几个针对 Java Maven 项目的实用 Skill 模板,覆盖常用开发场景。
模板 1:Maven 项目结构创建器
用途:创建标准的 Maven 项目结构和配置文件
---
name: maven-project-setup
description: 创建标准的 Java Maven 项目结构,包括目录、POM 配置和基础文件。当用户需要初始化 Maven 项目、创建新 Java 工程时触发。
---
# Maven 项目结构创建器
## 目标
创建符合 Maven 标准目录结构的 Java 项目,包含合理的 POM 配置和基础代码模板。
## 核心指令
### 1. 标准目录结构
bash
项目名/
├── src/
│ ├── main/
│ │ ├── java/com/example/
│ │ │ ├── App.java
│ │ │ └── utils/
│ │ └── resources/
│ │ ├── application.properties
│ │ └── log4j2.xml
│ └── test/
│ ├── java/com/example/
│ └── resources/
├── pom.xml
├── README.md
└── .gitignore
bash
### 2. POM 配置规范
- 使用最新稳定版 Maven 插件
- 指定 Java 版本(默认 Java 11 或 17)
- 添加常用依赖(JUnit, Log4j, SLF4J 等)
- 配置编码为 UTF-8
- 设置资源过滤
### 3. 文件生成规则
- **App.java**:包含 main 方法和基本示例
- **application.properties**:基础 Spring Boot 配置(如果适用)
- **.gitignore**:包含 Maven、IDE 和系统文件的忽略规则
- **README.md**:项目描述、构建和运行指令
## 输出格式
1. 使用树状图展示目录结构
2. 为每个重要文件提供完整内容
3. 在代码块中标注语言类型
4. 对配置选项进行简要说明
## 示例
**用户输入**:创建一个用户管理系统的 Maven 项目
**AI 输出**:
项目结构已创建:user-management-system/
user-management-system/
├── pom.xml
├── src/main/java/com/usermanagement/
│ └── Application.java
├── src/main/resources/
│ └── application.properties
└── README.md
bash
**pom.xml 内容**:
xml
<?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>
<groupId>com.usermanagement</groupId>
<artifactId>user-management-system</artifactId>
<version>1.0.0</version>
<properties>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- 测试依赖 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.9.2</version>
<scope>test</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
模板 2:Maven 依赖分析器
用途:分析 POM 依赖,提供优化建议
---
name: maven-dependency-analyzer
description: 分析 Maven 项目的依赖关系,检查版本冲突、过时依赖和安全漏洞。当用户需要检查依赖、优化 pom.xml 或解决冲突时触发。
---
# Maven 依赖分析器
## 角色
你是资深 Java 架构师,专注于依赖管理和构建优化。
## 审查流程
### 第一阶段:基本信息收集
1. 识别项目类型(Spring Boot、普通 Java 应用、库等)
2. 分析 Java 版本和构建工具版本
3. 统计依赖总数和层级
### 第二阶段:问题检测
#### 1. 版本冲突检查
- 识别重复依赖的不同版本
- 检查传递依赖的版本冲突
- 标记不兼容的版本组合
#### 2. 依赖健康度检查
- 标记过时版本(超过 2 年未更新)
- 识别废弃/不再维护的库
- 检查已知安全漏洞(CVE)
#### 3. 优化建议
- 推荐使用 BOM 管理版本
- 建议移除未使用的依赖
- 推荐更轻量的替代库
### 第三阶段:输出报告
#### 报告格式
Maven 依赖分析报告
📊 概览
-
总依赖数:XX
-
直接依赖:XX
-
传递依赖:XX
-
Java 版本:XX
-
构建工具:Maven XX
⚠️ 发现的问题
版本冲突
-
问题:log4j 版本冲突
-
当前版本:1.2.17 (来自 spring-boot-starter) 和 2.17.1 (直接引入)
-
风险:可能导致类加载问题
-
解决方案:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </exclusion> </exclusions> </dependency>
-
安全漏洞
-
CVE-2021-44228 (log4j 2.x < 2.17.0)
-
影响版本:2.0-beta9 到 2.16.0
-
建议升级到:2.17.1+
-
🎯 优化建议
-
使用依赖管理
<dependencyManagement> <dependencies> <dependency> <groupId>io.spring.platform</groupId> <artifactId>platform-bom</artifactId> <version>Cairo-SR8</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> -
移除无用依赖 :
commons-collections未被代码引用输出要求
- 按严重程度排序问题(安全 > 冲突 > 优化)
- 为每个问题提供具体代码修改示例
- 标记修复的优先级(高/中/低)
- 如果问题复杂,提供分步修复指南
模板 3:Maven 插件配置专家
用途:为特定任务配置 Maven 插件
---
name: maven-plugin-config
description: 为 Maven 项目配置各种插件,包括构建、测试、打包、部署等。当用户需要配置插件、优化构建流程或解决插件问题时触发。
---
# Maven 插件配置专家
## 插件分类配置
根据用户需求推荐和配置合适的插件。
### 1. 代码质量插件
#### SpotBugs(静态代码分析)
bash
xml
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>4.7.3.6</version>
<configuration>
<effort>Max</effort>
<threshold>Low</threshold>
<xmlOutput>true</xmlOutput>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
#### JaCoCo(测试覆盖率)
bash
xml
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.10</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>*/entity/.class</exclude>
</excludes>
</configuration>
</plugin>
bash
### 2. 构建打包插件
#### Spring Boot Maven Plugin
xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<mainClass>com.example.Application</mainClass>
<layout>JAR</layout>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
bash
### 3. 版本管理插件
#### Versions Maven Plugin
xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.15.0</version>
</plugin>
## 配置建议
1. **插件管理**:推荐在 `<pluginManagement>` 中统一管理版本
2. **生命周期绑定**:根据项目阶段合理绑定执行目标
3. **配置文件分离**:复杂配置使用外部文件
4. **性能优化**:合理设置跳过选项
## 执行命令参考
运行特定插件的目标
bash
mvn spotbugs:check
mvn jacoco:report
跳过插件执行
bash
mvn clean package -DskipTests
mvn clean install -Dspotbugs.skip=true
## 故障排除
### 常见问题
1. **插件版本冲突**:通过 exclusion 排除传递依赖
2. **内存不足**:配置 MAVEN_OPTS 环境变量
3. **网络问题**:配置镜像仓库
模板 4:Maven 多模块项目设计器
用途:设计和管理 Maven 多模块项目
---
name: maven-multi-module
description: 设计和创建 Maven 多模块项目结构,包括父POM、子模块依赖关系。当用户需要创建微服务、复杂系统或模块化项目时触发。
---
# Maven 多模块项目设计器
## 设计原则
1. **单一职责**:每个模块有明确的功能边界
2. **依赖方向**:依赖方向从具体到抽象,避免循环依赖
3. **版本统一**:父POM统一管理依赖版本
4. **构建独立**:支持单独构建子模块
## 标准结构模板
bash
my-multi-module-project/
├── pom.xml # 父POM(聚合+管理)
├── my-common/ # 通用模块
│ ├── pom.xml
│ └── src/
├── my-api/ # API接口模块
│ ├── pom.xml
│ └── src/
├── my-service/ # 业务服务模块
│ ├── pom.xml
│ └── src/
├── my-web/ # Web层模块
│ ├── pom.xml
│ └── src/
└── my-app/ # 启动模块
├── pom.xml
└── src/
bash
## 父POM配置模板
xml
<?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>
<!-- 项目坐标 -->
<groupId>com.example</groupId>
<artifactId>my-multi-module-project</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging> <!-- 关键:必须是 pom -->
<!-- 模块声明 -->
<modules>
<module>my-common</module>
<module>my-api</module>
<module>my-service</module>
<module>my-web</module>
<module>my-app</module>
</modules>
<!-- 属性管理 -->
<properties>
<java.version>17</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- 依赖版本统一管理 -->
<spring-boot.version>3.1.0</spring-boot.version>
<mybatis.version>3.0.2</mybatis.version>
</properties>
<!-- 依赖管理(BOM) -->
<dependencyManagement>
<dependencies>
<!-- Spring Boot BOM -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 公共插件配置 -->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
bash
## 子模块配置示例
**my-common/pom.xml**:
xml
<?xml version="1.0" encoding="UTF-8"?>
<project>
<parent>
<groupId>com.example</groupId>
<artifactId>my-multi-module-project</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>my-common</artifactId>
<dependencies>
<!-- 通用依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>
## 依赖关系规则
1. **禁止循环依赖**:通过 maven-enforcer-plugin 检查
2. **作用域传递**:注意 compile/runtime/provided/test 的区别
3. **版本继承**:子模块默认继承父模块的 dependencyManagement
## 构建命令
构建所有模块
mvn clean install
构建指定模块及其依赖
mvn clean install -pl my-web -am
跳过测试
mvn clean install -DskipTests
查看依赖树
mvn dependency:tree
## 最佳实践
1. 使用 `<dependencyManagement>` 统一管理版本
2. 公共依赖放在父POM,特有依赖放在子模块
3. 避免模块间过度耦合
4. 为每个模块编写独立的 README
使用建议
1. 如何选择模板
-
新项目初始化 :使用
maven-project-setup -
现有项目优化 :使用
maven-dependency-analyzer -
构建流程定制 :使用
maven-plugin-config -
复杂系统拆分 :使用
maven-multi-module
2. 创建 Skill 的步骤
# 1. 创建技能目录
mkdir -p .trae/skills/maven-project-setup
# 2. 创建 SKILL.md 文件
touch .trae/skills/maven-project-setup/SKILL.md
# 3. 复制上面的模板内容
# 4. 根据实际需求修改
3. 触发技巧
在 TRAE 中使用以下关键词触发:
-
"创建一个 Spring Boot 项目"
-
"分析这个 pom.xml 的依赖"
-
"配置 Maven 打包插件"
-
"设计一个多模块的电商系统"
4. 自定义扩展
可以根据团队规范定制:
-
统一的公司内部依赖版本
-
特定的代码规范检查规则
-
自定义的目录结构
-
团队内部的插件配置
这些模板可以直接使用,也可以根据你的具体需求进行组合和修改。建议先从 maven-project-setup开始,这是最常用的场景。