maven 属性以及灵活构建

简介:

maven 属性

一种简单的 maven 属性的使用是:

<properties>
    <org.springframework.version>3.1.4.RELEASE</org.springframework.version>
</properties>

上面这种属性是 maven 的自定义属性。

maven 有六种属性:

  • 内置属性:主要两个内置属性,${basedir}表示项目根目录,即包含 pom.xml 文件的目录;${version} 标识项目版本。

  • pom 属性:可以使用该类型的属性引用 pom 文件总对应元素的值。${project.artifacId} 就对应了 artifactId 元素的值。总是以 project 开头,下面是一些常用的 pom 属性:

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

    • ${project.build.testSourceDirectory}:项目测试源码目录。

    • ${project.build.directory}:项目构建输出目录

  • 自定义属性:上面的例子就是自定义属性。

  • setting 属性:跟 pom 属性同理,使用 setting 开头,引用 setting.xml 文件中 xml 元素的值。

  • java 系统属性:所有的 java 系统属性 maven 都可以引用,可以使用 mvn help:system 来查看所有 java 系统属性。

  • 环境变量属性:所有的环境变量都可以使用 env. 开头的 maven 属性引用。例如: env.JAVAHOME 代表 JAVAHOME 环境变量的值。可以使用 mvn help:system 来查看所有 java 系统属性。

看下面第一个例子:

<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>account-email</artifactId>
  <version>${project.version}</version>
</dependency>
<dependency>
  <groupId>${project.groupId}</groupId>
  <artifactId>account-persist</artifactId>
  <version>${project.version}</version>
</dependency>

这个例子就是当前的模块依赖 account-email 和 account-persist,这三个模块使用相同的 groupId 和 version

这样当项目版本升级的时候,就不需要更改依赖的版本了。

构建环境差异

在项目 src/main/resources 目录下我们会放入 jdbc.properties 属性文件,在开发和测试和线上环境我们需要连接的是不同的数据库环境。

我们的想法是可以把不同环境的配置文件放入到不同的文件夹当中。

所以可以们可以在 src/main 目录下面创建文件夹,大致如下:

src/main
    - profiles
        - dev
        - beta
        - prod

maven 为了提供不同环境的 profile 有可以配置的节点:

<profiles>
<profile>
  <id>dev</id>
  <properties>
    <profile.dir>dev</profile.dir>
  </properties>
</profile>

<profile>
  <id>beta</id>
  <properties>
    <profile.dir>beta</profile.dir>
  </properties>
</profile>

<profile>
  <id>prod</id>
  <properties>
    <profile.dir>prod</profile.dir>
  </properties>
</profile>
</profiles>

当我们要激活不同环境的 profile 的时候可以使用如下命令:

mvn clean install -Pdev

使用 -P 参数加上 profile 的 id 来激活 profile。同样还有很多的激活方式,命令方式激活比较清楚。

同时,如果我们要想在 build 的时候加载不同的配置文件需要在 pom 当中的 build 节点下,添加对资源的处理:

<resources>
  <resource>
    <directory>src/main/profiles/.${profile.dir}</directory>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
  </resource>
</resources>

当然上面对资源的处理使用 maven-resources-plugin 插件。

这样我们就实现了灵活构建不同环境的配置文件。

目录
相关文章
|
8月前
|
Java 项目管理 Maven
Maven项目管理与构建自动化完全指南
Maven彻底改变了Java项目管理方式,通过POM模型、依赖管理和标准化构建流程,大幅提升开发效率。本文深入解析其核心概念、多模块管理、私服搭建及与Spring Boot、Docker等现代技术栈的集成实践,助力开发者实现高效、规范的项目构建与团队协作。
1286 156
Maven项目管理与构建自动化完全指南
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
443 6
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
959 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
Java 持续交付 项目管理
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。
Maven是一款基于Apache许可的项目管理和构建自动化工具,在Java开发中极为流行。它采用项目对象模型(POM)来描述项目,简化构建流程。Maven提供依赖管理、标准构建生命周期、插件扩展等功能,支持多模块项目及版本控制。在Java Web开发中,Maven能够自动生成项目结构、管理依赖、自动化构建流程并运行多种插件任务,如代码质量检查和单元测试。遵循Maven的最佳实践,结合持续集成工具,可以显著提升开发效率和项目质量。
353 1
|
Java 测试技术 Maven
maven总结二: 常用标签及属性
maven总结二: 常用标签及属性
326 3
|
Java 应用服务中间件 Maven
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
SpringBoot Maven 项目打包的艺术--主清单属性缺失与NoClassDefFoundError的优雅解决方案
1695 0
|
自然语言处理 Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性。`bus-core-api(1.0-SNAPSHOT)`构建后,自动触发`app-web-ui`和`app-desktop-ui`的构建,两者均依赖bus-core-api的1.0快照版。 ``` 纯文本摘要: Maven自动化构建保证依赖项的稳定性:当`bus-core-api`的1.0-SNAPSHOT版本完成构建时,它会触发依赖它的`app-web-ui`和`app-desktop-ui`项目的构建,这两个项目都依赖`bus-core-api`的相同版本。
|
Java API Maven
Maven 自动化构建
**摘要 (Markdown 格式)**: Maven自动化构建确保依赖稳定性。当`bus-core-api` (1.0-SNAPSHOT) 构建后,依赖它的`app-web-ui`和`app-desktop-ui`(均依赖bus-core-api的1.0快照)会自动触发构建,保证与最新核心API兼容。
|
Java 测试技术 Maven
Maven 构建生命周期
Maven生命周期包括Clean(清除)、Default(构建)和Site(站点)三个阶段,用于项目构建与发布。Default生命周期含validate、compile、test、package、verify、install和deploy,确保代码编译、测试、打包和部署。Clean清除目标目录,Site生成项目文档。每个阶段由插件目标组成,如mvn clean package,先执行清理,再打包。
|
Java 测试技术 Maven
Maven 构建生命周期
Maven生命周期包括clean(clean目标清理输出),default(validate到deploy执行编译、测试、打包、验证、安装和部署),site(site与deploy-site生成发布站点)。每个阶段由插件目标组成,如mvn clean package执行清理和打包。生命周期阶段按顺序执行,目标可在阶段外独立调用。