# learn-maven-plugin **Repository Path**: zerocn/learn-maven-plugin ## Basic Information - **Project Name**: learn-maven-plugin - **Description**: 学习使用Maven插件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-12-21 - **Last Updated**: 2024-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 生命周期 生命周期(Lifecycle)是一系列阶段(Phases)的有序集合。 Maven 定义了三个标准的生命周期: 1. **默认生命周期(Default Lifecycle)**: - 用于处理项目的构建和部署。 - 主要阶段包括:`validate`, `compile`, `test`, `package`, `verify`, `install`, `deploy` 等。 2. **清理生命周期(Clean Lifecycle)**: - 用于清理项目生成的文件。 - 主要阶段包括:`pre-clean`, `clean`, `post-clean`。 3. **站点生命周期(Site Lifecycle)**: - 用于生成项目的站点文档。 - 主要阶段包括:`pre-site`, `site`, `post-site`, `site-deploy`。 # 阶段 ## 默认生命周期的常用阶段 - **validate**:验证项目是否正确,并且所有必要的信息是可用的。 - **initialize**:初始化构建状态,例如设置属性。 - **generate-sources**:生成编译所需的任何源代码。 - **process-sources**:处理源代码,例如过滤任何值。 - **generate-resources**:生成项目资源文件。 - **process-resources**:复制并处理资源文件到目标目录,准备打包。 - **compile**:编译项目的源代码。 - **process-classes**:处理编译后的类文件,例如进行字节码增强。 - **generate-test-sources**:生成编译测试所需的任何源代码。 - **process-test-sources**:处理测试源代码,例如过滤任何值。 - **generate-test-resources**:生成测试资源文件。 - **process-test-resources**:复制并处理测试资源文件到目标目录。 - **test-compile**:编译测试源代码。 - **process-test-classes**:处理编译后的测试类文件。 - **test**:使用合适的单元测试框架运行测试。 - **prepare-package**:在实际打包之前执行任何必要的操作。 - **package**:将编译后的代码打包成可分发的格式,如 JAR、WAR 等。 - **pre-integration-test**:在集成测试之前执行的操作。 - **integration-test**:处理打包的构件并发布到一个能够运行集成测试的环境中。 - **post-integration-test**:在集成测试之后执行的操作。 - **verify**:检查集成测试的结果,确保一切正常。 - **install**:将包安装到本地仓库,供其他项目使用。 - **deploy**:将最终的包复制到远程仓库,供其他开发人员和项目使用。 ## 清理生命周期的主要阶段 - **pre-clean**:执行一些需要在实际清理之前完成的工作。 - **clean**:移除所有上一次构建生成的文件。 - **post-clean**:执行一些需要在实际清理之后完成的工作。 ## 站点生命周期的主要阶段 - **pre-site**:执行一些需要在实际生成站点文档之前完成的工作。 - **site**:生成项目的站点文档。 - **post-site**:执行一些需要在实际生成站点文档之后完成的工作。 - **site-deploy**:将生成的站点文档部署到指定的服务器。 # 常用 POM 属性 - `${project.basedir}`:Maven 项目的根目录,即 pom.xml 文件所在的目录,与`${basedir}`、`${pom.basedir}`(不建议使用)等价 - `${project.groupId}`:项目的 groupId,与`${groupId}`等价 - `${project.artifactId}`:项目的 artifactId,与`${artifactId}`等价 - `${project.version}`:项目的 version,与`${version}`等价 - `${project.build.finalName}`:项目打包输出文件的名称,默认为:`{project.artifactId}-${project.version}` - `${project.build.sourceDirectory}`:项目的源码目录,默认为:`src/main/java/` - `${project.build.testSourceDirectory}`:项目的测试源码目录,默认为:`src/test/java/` - `${project.testOutputDirectory}`:项目脚本文件目录,默认为:`src/main/scripts` - `${project.build.directory}`:项目构件输出目录,默认为:`target/` - `${project.outputDirectory}`:项目代码编译输出目录,默认为:`target/classes/` - `${project.testOutputDirectory}`:项目测试代码编译输出目录,默认为:`target/test-classes/`