Maven常用命令
Maven 查看目录信息
查看本地仓库位置
命令:
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
2025/12/31大约 2 分钟
命令:
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<version>${spotless.version}</version>
<configuration>
<skip>${spotless.skip}</skip>
<java>
<eclipse>
<file>${project.basedir}/style/spotless_dolphinscheduler_formatter.xml</file>
</eclipse>
<removeUnusedImports />
<importOrder>
<file>${project.basedir}/style/eclipse.importorder</file>
</importOrder>
<replaceRegex>
<name>Remove wildcard imports</name>
<searchRegex>import\s+(static)*\s*[^\*\s]+\*;(\r\n|\r|\n)</searchRegex>
<replacement>$1</replacement>
</replaceRegex>
<replaceRegex>
<name>Block powermock</name>
<searchRegex>import\s+org\.powermock\.[^\*\s]*(|\*);(\r\n|\r|\n)</searchRegex>
<replacement>$1</replacement>
</replaceRegex>
<replaceRegex>
<name>Block jUnit4 imports</name>
<searchRegex>import\s+org\.junit\.[^jupiter][^\*\s]*(|\*);(\r\n|\r|\n)</searchRegex>
<replacement>$1</replacement>
</replaceRegex>
<replaceRegex>
<name>Block kubernetes-client</name>
<searchRegex>import\s+io\.kubernetes\.client\.[^\*\s]*(|\*);(\r\n|\r|\n)</searchRegex>
<replacement>$1</replacement>
</replaceRegex>
</java>
<pom>
<sortPom>
<encoding>UTF-8</encoding>
<nrOfIndentSpace>4</nrOfIndentSpace>
<keepBlankLines>true</keepBlankLines>
<indentBlankLines>false</indentBlankLines>
<indentSchemaLocation>true</indentSchemaLocation>
<spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
<sortModules>false</sortModules>
<sortExecutions>false</sortExecutions>
<predefinedSortOrder>custom_1</predefinedSortOrder>
<expandEmptyElements>false</expandEmptyElements>
<sortProperties>false</sortProperties>
</sortPom>
<replace>
<name>Leading blank line</name>
<search>project</search>
<replacement>project</replacement>
</replace>
</pom>
<markdown>
<includes>
<include>docs/**/*.md</include>
</includes>
<excludes>
<exclude>**/.github/**/*.md</exclude>
</excludes>
<flexmark />
</markdown>
<upToDateChecking>
<enabled>true</enabled>
</upToDateChecking>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${spotbugs.version}</version>
<configuration>
<xmlOutput>true</xmlOutput>
<threshold>medium</threshold>
<effort>default</effort>
<excludeFilterFile>dev-config/spotbugs-exclude.xml</excludeFilterFile>
<failOnError>true</failOnError>
</configuration>
<dependencies>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs</artifactId>
<version>4.0.0-beta4</version>
</dependency>
</dependencies>
</plugin>
# SpotBugs Maven插件配置解析
## 插件概述
这个配置是`spotbugs-maven-plugin`插件,它是SpotBugs工具的Maven集成插件。SpotBugs是一个Java静态代码分析工具,用于在不运行代码的情况下检测Java字节码中的潜在错误、性能问题和代码质量问题。
SpotBugs是FindBugs的继任者,支持Java 8+,功能更加强大,能够检测空指针异常、资源泄漏、线程安全问题等多种类型的代码问题。
## 配置解析
这个配置中的各个参数作用如下:
1. **xmlOutput**:设置为`true`表示生成XML格式的报告文件
2. **threshold**:设置为`medium`表示只报告中等及以上严重级别的问题
3. **effort**:设置为`default`表示使用默认的分析级别(平衡检测精度和性能)
4. **excludeFilterFile**:指定排除规则文件路径`dev-config/spotbugs-exclude.xml`,用于过滤不需要检测的问题类型
5. **failOnError**:设置为`true`表示当发现问题时构建失败
6. **dependencies**:显式指定了使用的SpotBugs核心版本为4.0.0-beta4
## 插件的主要功能
1. **静态代码分析**:在不运行代码的情况下分析Java字节码,发现潜在问题
2. 多种问题检测:包括但不限于:
- 空指针异常
- 资源泄漏
- 线程安全问题
- 性能问题
- 代码坏味道
3. **报告生成**:可以生成XML、HTML等格式的报告
4. **构建集成**:可以与Maven构建流程集成,在特定阶段自动执行
## 典型使用方式
### 1. 基本使用
配置完成后,可以通过以下命令运行SpotBugs分析:
Maven知识点-插件maven-surefire-plugin
这是 Maven Surefire Plugin,它是 Maven 生态中用于执行单元测试的核心插件,默认集成在 Maven 的生命周期中,主要用于运行 JUnit、TestNG 等测试框架的测试用例,并生成测试报告。以下是详细解析:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>${cobertura-maven-plugin.version}</version>
<configuration>
<check/>
<aggregate>true</aggregate>
<outputDirectory>./target/cobertura</outputDirectory>
<encoding>${project.build.sourceEncoding}</encoding>
<quiet>true</quiet>
<format>xml</format>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
</instrumentation>
</configuration>
</plugin>
# Cobertura Maven插件配置解析
## 插件基本信息
这是一个`cobertura-maven-plugin`插件的配置,该插件是用于Java项目的代码覆盖率分析工具,基于Cobertura框架开发。它能够在Maven构建过程中收集测试覆盖率数据并生成详细报告。
## 配置参数解析
1. **基本配置**
- `<version>${cobertura-maven-plugin.version}</version>`:指定插件版本,使用Maven属性便于统一管理
- `<check/>`:启用覆盖率检查,如果覆盖率不达标会导致构建失败
- `<aggregate>true</aggregate>`:在多模块项目中生成聚合报告,合并所有子模块的覆盖率数据
2. **输出配置**
- `<outputDirectory>./target/cobertura</outputDirectory>`:指定报告输出目录
- `<format>xml</format>`:生成XML格式的报告(通常用于集成到CI系统如Jenkins)
- `<encoding>${project.build.sourceEncoding}</encoding>`:使用项目定义的源码编码
3. **执行控制**
- `<quiet>true</quiet>`:减少控制台输出,使构建日志更简洁
- `<instrumentation><ignoreTrivial>true</ignoreTrivial></instrumentation>`:忽略简单方法(如getter/setter)的覆盖率统计
## 典型使用场景
1. **命令行执行**
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<skip>${jacoco.skip}</skip>
<dataFile>${project.build.directory}/jacoco.exec</dataFile>
</configuration>
<executions>
<execution>
<id>default-instrument</id>
<goals>
<goal>instrument</goal>
</goals>
</execution>
<execution>
<id>default-restore-instrumented-classes</id>
<goals>
<goal>restore-instrumented-classes</goal>
</goals>
<configuration>
<!-- <excludes>com/github/dreamhead/moco/*</excludes>-->
</configuration>
</execution>
<execution>
<id>default-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
# JaCoCo Maven插件配置解析
这个配置是用于`jacoco-maven-plugin`插件的配置,该插件是用于Java代码覆盖率分析的Maven插件。下面我将详细解析这个配置的作用、插件功能以及常见使用方式。
## 插件概述
`jacoco-maven-plugin`是JaCoCo(Java Code Coverage)工具的Maven集成插件,用于测量Java代码的测试覆盖率。JaCoCo通过字节码插桩技术,在运行时收集代码执行信息,生成详细的覆盖率报告,包括行覆盖率、分支覆盖率、方法覆盖率等指标。
## 配置解析
### 基本配置部分
OWASP Dependency-Check Maven插件是一个用于识别项目依赖项中已知安全漏洞的开源工具,属于OWASP(Open Web Application Security Project)项目的一部分。以下是该插件的全面解析:
Dependency-Check Maven插件是一款软件成分分析(SCA)工具,主要用于:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${maven-release-plugin.version}</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>@{project.version}</tagNameFormat>
<tagBase>${project.version}</tagBase>
</configuration>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-jgit</artifactId>
<version>1.9.5</version>
</dependency>
</dependencies>
</plugin>
这是 **Maven Release Plugin**,一个用于 **自动化 Maven 项目版本发布流程** 的核心插件。它通过标准化操作(如版本号更新、SCM 标签管理、构建部署等)简化发布过程,减少人为错误。以下是详细解析:
------
### **一、插件作用**
1. **版本发布自动化**
- 将开发版(如 `1.0.0-SNAPSHOT`)升级为正式版(如 `1.0.0`),并生成 Git/SVN 标签。
- 自动提交版本号变更到版本控制系统(SCM),并部署构件到 Maven 仓库。
2. **多模块项目支持**
- 通过 `autoVersionSubmodules` 配置,统一管理父子模块的版本号,避免手动逐个修改。
3. **流程标准化**
- 强制检查未提交代码、快照依赖等问题,确保发布版本稳定性。
------
### **二、配置解析(用户提供的配置示例)**
以下插件配置的作用是什么?配置中的插件是什么插件?通常如何使用该插件?
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>