`
sin90lzc
  • 浏览: 157363 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Maven灵活构建

 
阅读更多

Maven内置了三大特性:属性、Profile和资源过滤来支持构建的灵活性。

Maven属性

事实上有六种类型的Maven属性:
  • 内置属性:主要有两个常用内置属性——${basedir}表示项目根目录,即包含pom.xml文件的目录;${version}表示项目版本。
  • POM属性:pom中对应元素的值。例如${project.artifactId}对应了<project><artifactId>元素的值。具体有哪些POM属性可以用,可以查看本页末的附件——超级POM
  • 自定义属性:在pom中<properties>元素下自定义的Maven属性。例如
  • Settings属性:与POM属性同理。如${settings.localRepository}指向用户本地仓库的地址。
  • Java系统属性:所有Java系统属性都可以使用Maven属性引用,例如${user.home}指向了用户目录。可以通过命令行mvn help:system查看所有的Java系统属性
  • 环境变量属性:所有环境变量都可以使用以env.开头的Maven属性引用。例如${env.JAVA_HOME}指代了JAVA_HOME环境变量的值。也可以通过命令行mvn help:system查看所有环境变量。

资源过滤

默认情况下,Maven属性只有在POM中才会被解析。资源过滤就是指让Maven属性在资源文件(src/main/resources、src/test/resources)中也能被解析。
在POM中添加下面的配置便可以开启资源过滤

从上面的配置中可以看出,我们其实可以配置多个主资源目录和多个测试资源目录。

Maven除了可以对主资源目录、测试资源目录过滤外,还能对Web项目的资源目录(如css、js目录)进行过滤。这时需要对maven-war-plugin插件进行配置

Maven Profile

每个Profile可以看作是POM的一部分配置,我们可以根据不同的环境应用不同的Profile,从而达到不同环境使用不同的POM配置的目的。

profile可以声明在以下这三个文件中:
  • pom.xml:很显然,这里声明的profile只对当前项目有效
  • 用户settings.xml:.m2/settings.xml中的profile对该用户的Maven项目有效
  • 全局settings.xml:conf/settings.xml,对本机上所有Maven项目有效
非常值得注意的一点是,profile在pom.xml中可声明的元素在settings.xml中可声明的元素是不一样的:
  • profile在pom.xml中可声明的元素:
  • profile在settings.xml中可声明的元素:

激活Profile

有多种激活Profile的方式:
  1. 命令行方式激活,如有两个profile id为devx和devy的profile:
  2. settings文件显式激活
  3. 系统属性激活,用户可以配置当某系统属性存在或其值等于期望值时激活profile,如:不要忘了,可以在命令行声明系统属性。如:这其实也是一种从命令行激活profile的方法,而且多个profile完全可以使用同一个系统属性来激活。别忘了,系统属性可以通过mvn help:system来查看
  4. 操作系统环境激活,如这里的family值包括Window、UNIX和Mac等,而其他几项对应系统属性的os.name、os.arch、os.version
  5. 文件存在与否激活,Maven能根据项目中某个文件存在与否来决定是否激活profile
Notice:插件maven-help-plugin提供了一个目标帮助用户了解当前激活的profile:另外还有一个目标来列出当前所有的profile:

分享到:
评论
1 楼 beiyeren 2013-02-05  
好文!!!!

相关推荐

    Maven灵活的构建

    很详细的Maven学习资料,值得大家学习一下。

    Maven:构建自动化与项目管理的利器.zip

    Maven作为一款强大的项目管理工具,为开发者提供了自动化构建、依赖管理、项目文档生成等功能。通过掌握Maven的核心概念和基本使用,开发者可以更加高效地管理项目,提高开发效率和质量。同时,Maven的灵活性和可...

    maven window下安装包

    第14章:灵活的构建/14.1 Maven的属性/14.1.2 属性分类/14.1.2.3 自定义属性(properties) 第14章:灵活的构建/14.1 Maven的属性/14.1.2 属性分类/14.1.2.4 Setting文件属性 第14章:灵活的构建/14.1 Maven的属性/...

    maven 3.2,3

    Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等...

    编程开发+Maven技术+Maven安装与配置+技术课程

    我们的目标是让学员不仅能够安装和配置Maven,还能够灵活运用Maven的各种高级功能,以适应不同项目的需求。 通过本课程的学习,学员将能够: 理解Maven的工作原理及其在现代软件开发中的重要性。 掌握Maven的安装...

    Maven实战(高清版)

    第1章 maven简介1.1 何为maven1.1.1 何为构建1.1.2 maven是优秀的构建工具1.1.3 maven不仅仅是构建工具1.2 为什么...灵活的构建第15章 生成项目站点第16章 m2eclipse第17章 编写maven插件第18章 archetype

    Maven实战.pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 许晓斌 著

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    《Maven实战》

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven实战 高清版

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    Maven安装与配置的详细步骤

    Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等...

    Maven实战 高清版pdf

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    maven 教程

    系统性地阐述了使用Nexus建立私服、使用Maven进行测试、使用Hudson进行持续集成、使用Maven构建Web应用、Maven的版本管理、Maven的灵活构建、生成项目站点和Maven的m2eclipse插件等实用性较强的高级知识,读者可有...

    maven 3.3.3

    Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等...

    maven项目:neo4j实例

    Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而...程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

    Maven配置文档

    Maven进行测试、使用Hudson进行持续集成、使用 Maven构建 Web应用、Maven的版本管理、Maven的灵活构 建、生成项目站点和 Maven的 m2eclipse插件等实用性较强的高级知识,读者可有选择性的阅读;扩展性地讲解 了如何 ...

    dart-maven-plugin:用于构建Google Dart项目的Maven插件

    Dart Maven插件可将Google Dart集成到Maven构建过程中。 它查找带有文件夹 #Changenotes ### 3.0.0 dart:dart2js现在可以跨threadCount并行编译多个编译器会话 dart:pub现在通过提供pubCommand例如get和...

    Maven 私服 Nexus3

    Maven和ant都是软件构建工具(软件管理工具),Maven比Ant更加强大,已经取代了ant,jar包的声明式依赖描述。Maven有jar包的仓库。 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有...

    Windows下配置好的apache-maven-3.9.2

    Maven是一个项目管理工具,它可以帮助开发人员自动化构建、依赖管理和项目报告生成等任务。 Maven使用一种被称为"项目...总之,Maven是一个强大而灵活的项目管理工具,可以帮助开发人员更高效地构建和管理Java项目。

Global site tag (gtag.js) - Google Analytics