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 插件。

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

目录
相关文章
|
11天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2天前
|
XML Java Maven
Maven 构建配置文件
Maven的构建配置文件用于定制不同环境的构建方式,如pom.xml中的activeProfiles或profiles元素定义。配置文件分项目级、用户级和全局级,通过命令行、设置.xml、环境变量、操作系统设置或文件存在与否激活。例如,src/main/resources下的env.properties(默认)、env.test.properties(测试)和env.prod.properties(生产)用于测试,展示配置文件如何影响构建行为。示例中使用AntRun插件演示配置应用。
|
3天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,用于项目构建与发布。它有三个标准生命周期:Clean(清除目标目录)、Default(验证、编译、测试、打包、验证质量、安装和部署)和Site(生成项目文档和站点)。每个阶段由插件目标组成,如clean、package和dependency:copy-dependencies,这些目标可以绑定到特定阶段或独立执行。命令行中,阶段和目标的执行顺序按照出现的顺序进行。
|
16天前
|
Java Apache 项目管理
使用Maven进行Java项目构建与依赖管理
【4月更文挑战第16天】Apache Maven是Java项目的核心构建工具,它基于POM进行项目管理和构建自动化,简化构建过程并管理依赖。Maven提供标准化的目录结构、自动依赖解决、丰富的插件生态、多模块构建支持和版本管理功能。通过安装Maven、创建项目、配置依赖、构建及使用插件,开发者能高效管理Java项目,提升开发效率。了解和掌握Maven对于Java开发者至关重要。
|
22天前
|
Java Maven Spring
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)2
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
18 2
|
22天前
|
Java Maven 开发工具
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)1
【IntelliJ IDEA】使用Maven方式构建Spring Boot Web 项目(超详细)
22 2
|
3月前
|
Java Maven
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
38 0
|
4月前
|
存储 Java 关系型数据库
深入探索Maven:优雅构建Java项目的新方式(二)
深入探索Maven:优雅构建Java项目的新方式(二)
|
4月前
|
Java Maven
深入探索Maven:优雅构建Java项目的新方式(一)
深入探索Maven:优雅构建Java项目的新方式(一)
|
4月前
|
存储 Java 测试技术
深入 Maven:构建杰出的软件项目的完美工具
深入 Maven:构建杰出的软件项目的完美工具

热门文章

最新文章

推荐镜像

更多