深入理解maven与应用(二):灵活的构建
来源:互联网 发布:淘宝店家开通花呗 编辑:程序博客网 时间:2024/05/21 06:41
深入理解maven及应用(一):生命周期和插件
参考官方url:http://maven.apache.org/guides/index.html
一个优秀的构建系统必须足够灵活,应该能够让项目在不同的环境下都能成功构建。maven为了支持构建的灵活性,内置了三大特性,即:属性、profile和资源过滤。
1、maven属性
maven属性分6类:
1、内置属性:如${basedir}表示项目根目录,${version}表示项目版本
2、POM属性:用户可以引用pom文件中对应的值。如:
${basedir} 项目根目录
${project.build.directory} 构建目录,缺省为target
${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
${project.packaging} 打包类型,缺省为jar
${project.xxx} 当前pom文件的任意节点的内容
3、自定义属性:用户可以在pom的<properties>元素下自定义maven属性。
4、setting属性:用户可以使用以settings开头的属性引用settings.xml中xml元素的值,如${settings.localRepository}指向用户本地仓库的地址。
5、java系统属性:maven可以使用当前java系统的属性,如${user.home}指向了用户目录。
6、环境变量属性:所有环境变量都可以使用以env.开头的属性。如:${env.JAVA_HOE}。
2、资源过滤
这里所谓的资源:也就就是指src/main/resources和src/test/resources文件下的所有文件,默认情况下,这些文件会被复制到classpath下面,即target/classes下面。
所谓资源过滤,就是过滤这些文件夹下面的文件里面的内容,看里面的maven变量是否需要替换。默认情况下,只有pom.xml里面的变量才会被替换,资源文件是不会被过滤的,但是可以设置,如下:
<build><finalName>agentmanager</finalName><sourceDirectory>src/main/java</sourceDirectory><resources><!-- 控制资源文件的拷贝 --><resource><directory>src/main/resources</directory><excludes><exclude>**/jre.zip</exclude><exclude>**/jre.tar</exclude><exclude>agentmanager.jsmooth</exclude><exclude>assembly.xml</exclude></excludes><targetPath>${project.build.directory}</targetPath></resource><resource><directory>src/main/resources/conf</directory><targetPath>${basedir}/conf</targetPath><filtering>true</filtering></resource></resources></build>
如jdbc.properties
jdbc.driverClassName=${db.driver}jdbc.url=${db.url}jdbc.username=${db.user}jdbc.password=${db.pwd}
profile文件
<profiles> <profile> <id>dev</id> <properties> <db.driver>oracle.jdbc.driver.OracleDriver</db.driver> <db.url>jdbc:oracle:thin:@10.252.48.3:1521:dbname</db.url> <db.user>username</db.user> <db.pwd>userpwd</db.pwd> </properties> </profile> <profile> <id>test</id> <properties> <db.driver>oracle.jdbc.driver.OracleDriver</db.driver> <db.url>jdbc:oracle:thin:@10.252.48.3:1521:testdbname</db.url> <db.user>testusername</db.user> <db.pwd>testuserpwd</db.pwd> </properties> </profile></profiles>
在构建时可以使用-P参数激活一个或多个profile,多个之间用逗号分隔
如 mvn clean install -Pdev
3、maven profile
上面例子应该可以看出profile是做什么的,其实就相当于定义了一系列的profile变量,在具体构建时可用使用其中的某个profile去变量替换资源文件。
激活profile的方式有很多,如命令行激活(上面),settings文件显式激活、系统属性激活、操作系统环境激活、默认激活、文件存在与否激活等,具体可以参考官网资料。
3.1 profile的种类
根据需要,可以在以下文件声明profile。
1、pom.xml 针对当前项目
2、用户 settings.xml 用户目录下的.m2/settings.xml, 对当前用户的所有项目有效。
3、全局 settings.xml 即maven安装目录下的conf/settings.xml。对本机上的所有项目有效。
4、web资源过滤
在maven的web项目里面,除了上面所说的资源文件(src/main/resources)之外,还有一类叫做web资源目录,即src/main/webapp下面的js、css等等。默认情况下,这些目录是不被资源过滤的,开启的命令如下:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.1.1</version><configuration> <webResources><resource><directory>src/main/webapp</directory> <filtering>true</filtering> <includes><include>**/*.css</include><include>**/*.js</include> </includes> </resource> </webResources></configuration></plugin>
- 深入理解maven与应用(二):灵活的构建
- 深入理解maven与应用(二):灵活的构建
- Maven学习总结(17)——深入理解maven灵活的构建
- Maven学习总结(17)——深入理解maven灵活的构建
- Maven学习总结(13)——深入理解maven灵活的构建
- Fragment的概念与使用(二)--构建灵活的Android应用UI
- Fragment的概念与使用(二)--构建灵活的Android应用UI
- Fragment的概念与使用(二)--构建灵活的Android应用UI
- Fragment的概念与使用(二)--构建灵活的Android应用UI
- maven 灵活的构建
- maven-灵活的构建
- Maven 灵活的构建
- 灵活的构建maven项目
- Maven学习(五):maven的灵活构建
- 数组的灵活应用(二)
- Maven学习笔记(十一):灵活的构建
- Maven学习笔记(七)--灵活的构建
- maven(16)-灵活的环境构建
- Android Intent action有什么用???
- Android之Bluetooth
- 代理IP
- ArcGIS教程:样条函数法的工作原理
- 背包问题
- 深入理解maven与应用(二):灵活的构建
- 焦虑恐慌
- POJ2487Farey Sequence(欧拉函数&&法雷级数)
- ubuntu 安装 openssh-server
- mysql字符串分割
- Android4.3 蓝牙BLE初步
- 手机中毒丢失文件怎么恢复
- 第2期照片征集活动7月1日开始 主题:体彩笑脸
- Python 爬虫如何入门学习?