maven-灵活的构建

为了适应不同环境的构建,maven为支持灵活的构建,内置了属性、profile和资源过滤3大属性

一、Maven属性

maven提供了多种属性,如用于消除重复的<properties>元素,主要包括六种:

1、内置属性

主要有两个,${basedir}:项目根目录,包含pom.xml文件的目录;${version}:项目版本

2、POM属性

用于引用pom文件中对应元素的值,如${project.artifactId}对应<project><artifactId>元素的值,常用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,与${vesion}等价
${project.build.finalName}:项目打包输出文件的名称,默认为${project.artifactId}-${project.version}
这些属性对应了一个pom元素,有些属性的默认值是在超级pom中定义的。

3、自定义属性

在pom的<properties>元素下自定义Maven属性,如<properties><my.prop>hello</my.prop></properties>,可在pom中使用${my.prop}来引用其值

4、Settings属性

和pom属性同理,使用以settings.开头的属性引用setttings.xml文件xml元素的值,如${settings.localRepository}指向用户本地仓库的地址

5、JAVA系统属性

所有java系统属性都可以使用Maven属性引用,如${user.home}指向了用户目录,可使用mvn help:system查看时所有java系统属性

6、环境变量属性

所有环境变量都可以使用以env.开头的maven属性引用,如${env.JAVA_HOME}指代了JAVA_HOME环境变量的值,可使用mvn help:system查看时所有java系统属性

如maven-surefire-plugin提供了reportsDirectory参数来指定测试报告生成的目录

二、资源过滤

使用maven属性将会变化(主要针对资源配置文件)的部分抽取出来,然后在不同环境中,使用不同配置的profile配置,以此来应对环境的变化。不同环境的profile,激活后

就对应不同的配置资源文件。

资源配置文件是有maven-resources-plugin插件处理的,默认行为是将主资源文件和测试资源文件编译输出到相应的目录中去。

开启资源目录过滤:需要在resources/resouce下添加<filtering>true</fitering>即可。

激活profile文件:mvn clean install -P+profile配置的id

三、profile

为了能让构建在各个环境中方便的移植,引入profile。profile能够在构建时修改pom元素的一个子集,或增加额外的配置元素。

profile的激活,具体自己搜索:

1、命令行激活:mvn clean install -Pdev-x,dev-y,mvn命令行参数—P加上profile的id来激活profile,多个id以,分割

2、settings文件显示激活,配置在settings.xml文件中的active-Profiles元素,表示其配置的Profile对所有项目都处于激活状态

3、系统属性激活,配置当某系统属性存在时或某系统属性为某值时,激活profile

4、操作系统激活,根据操作系统环境自动激活相应的profile,配置在profiles/profile/activation中

5、文件存在与否激活

6、默认激活

profile的种类:

pom.xml:pom.xml中声明的profile只对当前目录有效

用户setttings.xml:用户目录下.m2/settings.xml中的profile对本机上该用户所有maven项目有效

全局settings.xml:maven安装目录下conf/settings.xml中的profile对本机上所有的maven项目有效

profiles.xml:仅针对maven2

四、web资源过滤

web资源文件指src/main/webapp/目录下的文件,打成war后,不会位于应用程序的classpath中,也可通过profile文件的方式解决,如改变css文件的样式。

发布了19 篇原创文章 · 获赞 3 · 访问量 9736

猜你喜欢

转载自blog.csdn.net/pinghuqiuyue9/article/details/52704610
今日推荐