【Maven实战】之灵活的构建
来源:互联网 发布:腾讯强力卸载软件 编辑:程序博客网 时间:2024/06/14 09:27
前言
- Maven为了支持构建的灵活性,内置三大属性,即:
- 属性
- Profile
- 资源过滤
Maven属性
- 六大属性
- 内置属性
- 主要有两个常用属性【
basedir】表示系统根目录和【 {version}】表示项目版本
- 主要有两个常用属性【
- 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。${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}。
- 自定义属性
- 用户可以在POM的元素下自定义Maven属性。例如:
<project> ... <properties> <my.prop>hello</my.prop> </properties> ...</project>
- Settings属性
- 与POM属性同理,用户使用以settings.开头的属性引用settings.xml文件中XML元素的值,如常用的${settings.localRepository}指向用户本地仓库的地址
- Java系统属性
- 所有Java系统属性都可以使用Maven属性引用,例如${user.home}指向了用户目录。用户可以使用mvn help:system查看所有的Java系统属性。文章后面列出了查询的结果。
- 环境变量属性
- 所有环境变量都可以使用以env.开头的Maven属性引用。例如${env.JAVA_HOME}指代了JAVA_HOME环境变量的值。用户可以使用mvn help:system查看所有的Java系统属性。
构建环境的差异
- 通过Maven过滤相关目录下的资源,替换指定字符,以达到通过maven命令控制构建环境的不同,自动化切换环境的效果。
- 流程如下:
资源过滤流程
- 更换db.properties文件内数据库自动化定义的内容,如下
dataSource.driverClassName=${db.driverClassName}dataSource.url=${db.url}dataSource.username=${db.username}dataSource.password=${db.password}
- Pom文件定义如下:
<profiles> <profile> <id>dev</id> <properties> <db.driverClassName>com.mysql.jdbc.Driver</db.driver> <db.url>jdbc:mysql://112.74.170.152:3306/andacredit</db.url> <db.username>dba</db.username> <db.password>AndaTech2017,./</db.password> </properties> </profile> </profiles> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- 是否替换资源中的属性--> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> </resource> </resources>
- 执行Maven命令如下:
mvn clean install -Pdev -P参数表示在命令行激活一个Profile
- 查看class输出路径下的db.properties
Maven Profile
- Maven Profile是为了能让构建在各个环境下方便地移植而产生的一个Maven元素。
Profile的六种激活方式
- 命令行激活
mvn clean install -Pdev-one,-Pdev-two多个id之间用【,】隔开
- settings文件显式激活
- 使某个Profile一直处于激活状态,使用如下配置:
<settings> ... <activeProfiles> <activeProfile>dev-x</activeProfile> </activeProfiles> ...</settings>
- 系统属性激活
<profiles> <profile> <activation> <property>test</property> </activation> ... </profile></profiles>配置当【test】系统属性存在时,激活该profile,或者<profiles> <profile> <activation> <property>test</property> <value>x</value> </activation> ... </profile></profiles>当【test】系统属性存在且值等于X时,激活该profile
- 操作系统环境激活
<profiles> <profile> <activation> <os> <name>Window XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> </activation> ... </profile></profiles>
- 文件存在与否激活
<profiles> <profile> <activation> <file> <missing>x.properties</missing> <exists>y.properties</exists> </file> </activation> ... </profile></profiles>
- 默认激活
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile></profiles>
- 注意:如果Pom中有任何一个profile通过以上其他任意一种方式激活,所有默认激活的配置都会失效。
- 了解当前激活的profile
mvn help:active-profiles
- 列出当前所有的profile
mvn help:all-profiles
profile的种类
- pom.xml 当前项目有效
- 用户settings.xml .m2/settings.xml 本机上该用户所有项目有效
- 全局settings.xml ${MAVEN_HOME}/conf/settings.xml 本机上所有项目有效
- profiles.xml
Web资源过滤
- 通过resource属性指定资源目录并开启过滤和指定文件,就可以通过命令行过滤指定文件中的特定字段。
<profiles> <profile> <id>css-a</id> <properties> <img.logo>a.jpg</img.logo> <img.color>red</img.color> </properties> </profile> <profile> <id>css-a</id> <properties> <img.logo>b.jpg</img.logo> <img.color>blue</img.color> </properties> </profile></profiles><resources> <resource> <directory>src/main/web</directory> <!--指定要过滤的文件--> <includes> <include>**/*.css</include> <include>**/*.js</include> </includes> <!-- 是否替换资源中的属性--> <filtering>true</filtering> </resource></resources>
阅读全文
0 0
- 【Maven实战】之灵活的构建
- maven 灵活的构建
- maven-灵活的构建
- Maven 灵活的构建
- maven学习日志之六 Maven项目的灵活构建
- 灵活的构建maven项目
- Maven学习笔记(十一):灵活的构建
- Maven学习笔记(七)--灵活的构建
- maven(16)-灵活的环境构建
- Maven灵活构建
- Maven:灵活构建
- Maven学习(五):maven的灵活构建
- 《maven实战》学习笔记7——maven项目版本管理和灵活构建
- 深入理解maven与应用(二):灵活的构建
- 深入理解maven与应用(二):灵活的构建
- 构建灵活的界面
- 构建灵活的UI
- 一次简单的Maven加速构建实战
- 【TensorFlow】MNIST(使用LeNet5+滑动平均+正则化+指数衰减法+激活函数+模型持久化)
- pxe装机(http篇)
- 项目中,微信利用jweixin进行图片上传
- 线程中的一些方法(yield,sleep,wait)
- 如何将图片存到数据库中,并在前台显示:
- 【Maven实战】之灵活的构建
- javascript历史
- 韩信点兵
- Android aidl 案例分析Binder机制
- flume 介绍与原理
- python基础面试题
- 随笔
- "1,2;3,4,5;6,7,8,9" 转换成[1,2][3,4,5][6,7,8,9]
- 171212-类的其他成员【连续第四十八天】