Maven的六类属性,${project.basedir},${project.build.directory}:项目构件输出目录,默认为 target/

内置属性

主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本

POM属性

用户可以使用该属性引用POM文件中对应元素的值,常用的POM属性包括:

${project.build.sourceDirectory}:项目的主源码目录,默认为 src/main/java

${project.build.testSourceDirectory}:项目的测试源码目录,默认为 src/test/java

${project.build.directory}:项目构件输出目录,默认为 target/

${project.outputDirectory}:项目主代码编译输出目录,默认为 target/classes/

${project.testOutputDirectory}:项目测试代码编译输出目录,默认为 target/test-classes/

${project.groupId}:项目的 groupId

${project.artifactId}:项目的 artifactId

${project.version}:项目的 version,与${version}等价

${project.build.fianlName}:项目打包输出文件的名称。默认为${project.artifactId}-${project.version}

自定义属性

用户可以在POM的<properties>元素下自定义Maven属性

Settings属性

用户使用settings.开头的属性引用 settings.xml 文件中XML元素的值

Java系统属性

所有Java系统属性都可以使用Maven属性引用

环境变量属性

所有环境变量都可以使用以env.开头的Maven属性引用

在依赖中 使用pom变量

1

2

3

4

5

6

7

8

9

10

11

12

<dependencies>

    <dependency>

        <groupId>${project.groupId}</groupId>

        <artifactId>part-a</artifactId>

        <version>${project.version}</version>

    </dependency>

    <dependency>

        <groupId>${project.groupId}</groupId>

        <artifactId>part-b</artifactId>

        <version>${project-version}</version>

    </dependency>

</dependencies>

在插件中使用pom变量

1

2

3

4

5

6

7

8

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-surefire-plugin</artifactId>

    <version>2.5</version>

    <configuration>

        <repositoryDirectory>${project.build.directory}/test-reports</repositoryDirectory>

    </configuration>

</plugin>

自定义变量

1

2

3

4

5

6

7

8

9

10

11

<profiles>

    <profile>

        <id>dev</id>

        <properties>

            <db.driver>com.mysql.jdbc.Driver</db.driver>

            <db.url>jdbc:mysql://localhost:3360/test</db.url>

            <db.username>username</db.username>

            <db.password>password></db.password>

        </properties>

    </profile>

</profiles>

Maven属性默认只有在POM中才会被解析,因此需要让Maven解析资源文件中的Maven属性。Maven用maven-resources-plugin处理资源文件。它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。

Maven默认的主资源目录和测试资源目录的定义是在超级POM中,要为资源目录开启过滤,只要在此基础上添加一行filtering配置即可。

Filtering是maven resource插件的功能,作用是用环境变量,pom文件里定义的属性和指定文件里的属性替换属性文件的占位符。(超级pom在 apache-maven-3.3.9\lib\maven-model-builder-3.3.9.jar\org\apache\maven\model\pom-4.0.0.xml)

### Maven 3.8.1 生命周期相关插件的使用说明 Maven 是一种强大的 Java 项目管理和构建工具,其核心特性之一是基于生命周期的构建流程管理[^2]。通过定义标准化的生命周期阶段(如 `clean`、`compile`、`test` 和 `package`),Maven 提供了一种一致的方式来处理不同类型的构建任务。 #### 插件机制概述 Maven 的插件机制允许开发者根据具体需求扩展和定制构建过程。这些插件通常绑定到特定的生命周期阶段上,在该阶段触发相应的操作。以下是几个常见的与生命周期相关的插件及其用途: --- ### 清理阶段 (`clean`) 此阶段用于清除之前构建产生的文件夹或产物。 - **maven-clean-plugin** - 功能:删除目标目录中的所有生成文件。 - 默认绑定至 `clean` 生命周期阶段。 - 配置示例: ```xml <build> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> <configuration> <filesets> <fileset> <directory>${project.basedir}/custom-output</directory> <includes> <include>*.log</include> </includes> </fileset> </filesets> </configuration> </plugin> </plugins> </build> ``` --- ### 编译阶段 (`compile`) 此阶段负责将源代码转换为目标字节码。 - **maven-compiler-plugin** - 功能:编译项目的源代码。 - 默认绑定至 `compile` 和 `testCompile` 生命周期阶段。 - 配置示例: ```xml <build> <plugins> <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> </plugins> </build> ``` --- ### 测试阶段 (`test`) 在此阶段运行单元测试并验证代码质量。 - **maven-surefire-plugin** - 功能:执行 JUnit 或 TestNG 单元测试。 - 默认绑定至 `test` 生命周期阶段。 - 配置示例: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration> <skipTests>false</skipTests> <includes> <include>**/*Test.java</include> </includes> </configuration> </plugin> </plugins> </build> ``` --- ### 打包阶段 (`package`) 此阶段创建最终的应用程序工件(如 `.jar`, `.war` 文件)。 - **maven-jar-plugin** - 功能:为 Java 应用程序生成标准的 `.jar` 文件。 - 默认绑定至 `package` 生命周期阶段。 - 配置示例: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>com.example.MainApp</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> ``` - **maven-war-plugin** - 功能:为 Web 应用程序生成 `.war` 文件。 - 默认绑定至 `package` 生命周期阶段。 - 配置示例: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> ``` --- ### 安装阶段 (`install`) 和部署阶段 (`deploy`) 这两个阶段分别涉及将构件安装到本地仓库以及远程仓库的操作。 - **maven-install-plugin** - 功能:将生成的工件安装到本地 Maven 仓库中。 - 默认绑定至 `install` 生命周期阶段。 - **maven-deploy-plugin** - 功能:将生成的工件上传到远程存储库。 - 默认绑定至 `deploy` 生命周期阶段。 - 配置示例: ```xml <distributionManagement> <repository> <id>nexus-releases</id> <url>http://your-nexus-server/repository/releases/</url> </repository> </distributionManagement> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </build> ``` --- ### 总结 上述插件展示了如何在 Maven 构建过程中充分利用生命周期的不同阶段完成各种任务。每款插件都可以进一步配置以满足个性化的需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值