Maven生命周期详解

发布时间:2023-05-21

一、Maven生命周期概述

Maven生命周期是指Maven在构建过程中所涉及的所有阶段和过程,包括清理资源、编译程序、打包、测试、部署、代码分析等过程。 Maven生命周期包含了多个阶段,每个阶段都有其特定的目的和行为,这些阶段是按照顺序依次执行的。同时,每个阶段都有其相应的插件和默认处理方式。Maven生命周期的顺序是固定的,不会因为使用插件而改变顺序。

二、Maven生命周期的三个阶段

Maven生命周期可以分为三个阶段:清理、构建和站点生成。

1. 清理阶段

clean阶段是Maven生命周期的第一个阶段,主要是清理上一次构建产生的所有文件,包括已编译的代码、打包文件和临时文件等。在这个阶段,执行Maven命令 mvn clean

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-clean-plugin</artifactId>
                <version>3.1.0</version>
                <executions>
                    <execution>
                        <id>clean-build</id>
                        <phase>clean</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

2. 构建阶段

build阶段是Maven生命周期的第二个阶段,主要是构建项目,生成目标文件等。在这个阶段,执行Maven命令 mvn compile

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <executions>
                    <execution>
                        <id>compile-build</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3. 站点生成阶段

site阶段是Maven生命周期的第三个阶段,主要是生成项目站点,包括各种报表、文档、静态资源等。在这个阶段,执行Maven命令 mvn site

<project>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>3.9.0</version>
                <executions>
                    <execution>
                        <id>site-build</id>
                        <phase>site</phase>
                        <goals>
                            <goal>site</goal>
                        </goals>
                        <configuration>
                            <reportPlugins>
                                <plugin>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-project-info-reports-plugin</artifactId>
                                    <version>3.0.0</version>
                                </plugin>
                            </reportPlugins>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

三、Maven生命周期中的各个插件

Maven生命周期的每个阶段都有其对应的插件,这些插件可以满足更具体的构建过程需求。

1. clean插件

clean插件主要是用来清理构建目录下的文件与目录。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <filesets>
            <fileset>
                <directory>${basedir}/target</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <excludes>
                    <exclude>**/*.war</exclude>
                </excludes>
            </fileset>
        </filesets>
    </configuration>
</plugin>

2. compile插件

compile插件主要是用来编译项目中的源代码。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>

3. package插件

package插件主要是用来打包项目,将项目打包成jar、war等格式。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>create-jar-archive</id>
            <phase>package</phase>
            <goals>
                <goal>jar</goal>
            </goals>
        </execution>
    </executions>
</plugin>

4. deploy插件

deploy插件主要是用来将项目部署到Maven仓库中。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>3.0.0-M1</version>
    <configuration>
        <skip>false</skip>
    </configuration>
</plugin>

总结

以上就是Maven生命周期的详细介绍,每个阶段都有相应的插件和执行方式,可以根据项目需要进行不同的配置和处理。通过Maven生命周期的理解和应用,可以更好的进行项目构建和管理。