maven 灵活构建
灵活构建
项目的构建根据不同的情况可能需要有一定的差异,比如编译级别、依赖、打包的属性文件等在不同的运行环境中可能需要有不同的值。为了实现灵活构建,Maven内置了三个特性:
属性:在POM中通过${属性名称}引用构建时的属性值,从而达到灵活构建的目的,主要有六种属性,包括内置属性、POM属性、自定义属性、setting属性、Java系统属性、 环境变量属性。
属性替换可以在pom.xml和资源文件中使用,在资源文件中使用时需要开启资源文件过滤,pom.xml是默认开启的。可以使用的属性如下:
1. 内置属性:如¥{basedir}表示项目根目录,¥{version}表示项目版本
2. POM属性:用户可以引用pom文件中对应的值。如:
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName}
产出物名称,¥{project.artifactId}-¥{project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
3. 自定义属性:用户可以在pom的元素下自定义maven属性。
4.
setting属性:用户可以使用以settings开头的属性引用settings.xml中xml元素的值,如
${settings.localRepository}指向用户本地仓库的地址。
5. java系统属性:maven可以使用当前java系统的属性,如${user.home}指向了用户目录。
6. 环境变量属性:所有环境变量都可以使用以env.开头的属性。如:${env.JAVA_HOE}。
profile:profile能够定义多个POM的子集,在构建的时候动态激活某个profile,从而修改POM。
资源过滤:资源过滤是指Maven对项目资源文件内容进行变量替换。在资源过滤被激活的时候,Maven会扫描资源,寻找由${}包围的Maven属性的引用。一旦找到这些引用,就会使用合适的值去替换它们.
案例1、灵活构建测试环境和开发环境,(前提需要开启资源文件过滤)
<!-- 灵活构建 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
<jdbc.ur>jdbc:oracle:thin:@localhost:1521:XE</jdbc.ur>
<jdbc.username>hr</jdbc.username>
<jdbc.password>hr</jdbc.password>
<project.build.sourceEncoding>gbk</project.build.sourceEncoding>
</properties>
<!-- 默认激活 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
<jdbc.ur>jdbc:oracle:thin:@localhost:1521:XE</jdbc.ur>
<jdbc.username>test</jdbc.username>
<jdbc.password>test</jdbc.password>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>
</profile>
</profiles>
<build>
<!-- 插件配置 -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
案例2、如果属性过多,导致POM文件过大,(${profile.id}.properties 注意)
<!-- 灵活构建 -->
<profiles>
<profile>
<id>dev</id>
<properties>
<profile.id>dev</profile.id>
</properties>
<!-- 默认激活 -->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<profile.id>test</profile.id>
</properties>
</profile>
</profiles>
<build>
<!-- 插件配置 -->
<filters>
<filter>src/main/filters/${profile.id}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
maven 灵活构建的更多相关文章
- Maven实战读书笔记(六):Maven灵活构建
Maven为了支持构建的灵活性,内置了3大特性,即:属性.Profile和资源过滤. 6.1 Maven属性 Maven的属性与Java代码的常量有异曲同工之妙,都是为了消除重复,对相关内容进行统一管 ...
- Maven灵活构建(转载)
https://blog.csdn.net/sin90lzc/article/details/7552033
- Maven 学习总结 (七) 之 灵活构建
一个优秀的构建系统必须足够灵活,他应该能够让项目在不同的环境下都能成功地构建.Maven为支持项目的灵活性,内置了三大特性,即属性.Profile和资源过滤. Maven属性 通过<proper ...
- 11 Maven 灵活的构建
Maven 灵活的构建 一个优秀的构建系统必须足够灵活,它应该能够让项目在不同的环境下都能成功地构建.例如,典型的项目都会有开发环境.测试环境和产品环境,这些环境的数据库配置不尽相同,那么项目构建的时 ...
- Maven插件构建Docker镜像
背景 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维上的额外复杂性,尤其是在服务部署和服务监控上.单体应用是集中式的,就一个单体跑在一起,部署和管理的时候非常简单,而微服务是一个网 ...
- 用Eclipse+Maven+Jetty构建Java Web开发环境(详细笔记)
(软件环境) 『系统』Windows 10 x64 『JAVA』JDK 1.8.0_91 『Eclipse』 Eclipse-oxygen 『Maven』 apache-maven-3.6.3 『Je ...
- 准备阶段-maven项目构建
依据我现阶段对maven的了解,具使用POM管理项目和强大的repository资源管理库支持. 在项目建立初期,对网站的可拓展.高并发.易于管理做了评估.最终使用Maven 管理该项目 . 如下是m ...
- 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)
工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...
- Maven学习-构建项目
创建项目 运行如下命令会创建一个简单的Maven项目. mvn archetype:create -DgroupId=com.netease.learn -DartifactId=simple -Dp ...
随机推荐
- centos7 下zookeeper 部署 单机多实例模式
centos7 下zookeeper 部署 本文参考https://www.linuxidc.com/Linux/2016-09/135052.htm 1.创建/usr/local/zookeeper ...
- tar: Exiting with failure status due to previous errors
发生在tar压缩或者解压缩的过程中,原因是压缩包在建立的时候是用了sudo的,所以你解压的时候也要加上sudo,问题就很好解决了的
- 验证GridControl Gridview 单元格。
一般的验证方法,使用单元格值改变事件.现在记录另一个事件实现验证. 场景:控制当某个单元格的值的长度不能超过10 直接看代码: private void gridViewFileContent_Val ...
- docker学习端口映射---第二章节
一.运行一个web应用 首先,下载一个docker镜像: [root@k8s-01 ~]# docker pull training/webapp 运行webapp的容器: [root@k8s-01 ...
- Java赋值
public class Car { 方法1: private String 品牌="初始化值"; private String 价格; 方法2: public Car(Strin ...
- 安装webstrom2019
破解webstrom2019 下载地址:https://www.jetbrains.com/webstorm/ 下载安装后进行破解(安装基本上是傻瓜样式的) 可以在线进入 http://idea.l ...
- Python第五章(北理国家精品课 嵩天等)
函数和代码复用 函数的定义和使用 def <函数名>(<参数(0个或多个)>): <函数体> return <返回值>可选参数放在不可选参数之后*b不定 ...
- OpenGL之纹理贴图(Texture)
学习自: https://learnopengl-cn.github.io/01%20Getting%20started/06%20Textures/ 先上一波效果图: 实际上就是:画了一个矩形,然后 ...
- wpf binging(三) 绑定方法的返回值
有时候我们不能绑定对象的属性或者成员,我们需要绑定一个对象的方法时 可以用 ObjectDataProvider 比如先声明一个类 含有加法 ObjectDataProvider 的简单使用 以下为综 ...
- python—DAY1
# user = "123"# possword = "111"# count = 0## while count < 3:# user_name = i ...