- 浏览: 1587573 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
payton321:
dao,util,servie,基础模块应该是maven项目, ...
Maven最佳实践:划分模块 -
AdrainHuang:
深有体会,我这边已经 给项目坑死了,依赖关系太复杂,基本没人敢 ...
Maven最佳实践:管理依赖 -
远方_张涛:
赞赞赞,生动有趣还说明问题
Maven最佳实践:版本管理 -
smartdog:
新的网站访问不了啊~~博主快更新
再见JavaEye -
smartdog:
言简意赅,厉害
Maven最佳实践:遵循约定
首先简单介绍下 Maven 的 profile 是什么。对于人来说,profile 是指人的肖像,轮廓,比如论坛里每个人注册了帐号后,可以设置自己的 profile,放上照片,介绍等等。对于 Maven 来说又是怎样呢?整个项目定义好了项目对象模型(POM),就像论坛为每个人提供了默认的行为功能,如果我想改变我机器上的 POM 呢?这时就可以使用 profile。下面举个例子:
<profiles> <profile> <id>jdk16</id> <activation> <jdk>1.6</jdk> </activation> <modules> <module>simple-script</module> </modules> </profile> </profiles>
这个 profile 的意思是,当机器上的 JDK 为1.6的时候,构建 simple-script 这个子模块,如果是1.5或者1.4,那就不构建,这个 profile 是由环境自动激活的。
我们需要在合适的地方使用合适的 profile ,并且在合适的时候用合适的方式将其激活,你不能在构建服务器上激活非公共的 profile,你也不能要求开发人员写很复杂的命令来使用常规的 profile。因此这里介绍一下几种 profile 的激活方式。
1. 根据环境自动激活。
如前一个例子,当 JDK 为1.6的时候,Maven 就会自动构建 simple-script 模块。除了 JDK 之外,我们还可以根据操作系统参数和 Maven 属性等来自动激活 profile,如:
<profile> <id>dev</id> <activation> <activeByDefault>false</activeByDefault> <jdk>1.5</jdk> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> <property> <name>mavenVersion</name> <value>2.0.5</value> </property> <file> <exists>file2.properties</exists> <missing>file1.properties</missing> </file> </activation> ... </profile>
2. 通过命令行参数激活。
这是最直接和最简单的方式,比如你定义了一个名为 myProfile 的 profile,你只需要在命令行输入 mvn clean install -Pmyprofile 就能将其激活,这种方式的好处很明显,但是有一个很大的弊端,当 profile 比较多的时候,在命令行输入这写 -P 参数会让人觉得厌烦,所以,如果你一直用这种方式,觉得厌烦了,可以考虑使用其它自动激活的方式。
3. 配置默认自动激活。
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
<profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> ... </profile>
在一个特殊的环境下,配置默认自动激活的 profile 覆盖默认的 POM 配置,非常简单有效。
4. 配置 settings.xml 文件 profile 激活。
settings.xml 文件可以在 ~/.m2 目录下,为某个用户的自定义行为服务,也可以在 M2_HOME/conf 目录下,为整台机器的所有用户服务。而前者的配置会覆盖后者。同理,由 settings.xml 激活的 profile 意在为用户或者整个机器提供特定环境配置,比如,你可以在某台机器上配置一个指向本地数据库 URL 的 profile,然后使用该机器的 settings.xml 激活它。激活方式如下:
<settings> ... <activeProfiles> <activeProfile>local_db</activeProfile> </activeProfiles> </settings>
Maven 提供的 profile 功能非常强大和灵活,用得好的话,可以有效的隔离很多特殊的配置,使得整个项目能在不同环境中顺利的构建。但是,强大和灵活带来得问题是相对难掌握,希望本文能对 Maven 使用者有帮助。
评论
1:多个profile,如何执行?
mvn clean install -P id1
这种方式不行啊。
2:通过属性去激活,这些属性我从哪里去取得呢?
我在服务器上执行uname -a,显示如下内容。
Linux rel_usf.nhncorp.cn 2.6.9-78.ELsmp #1 SMP Fri Jul 25 00:04:28 EDT 2008 i686 i686 i386 GNU/Linux
我该怎么添写那些属性啊,呵呵!!
mvn clean install -Pid1,id2,id3
<profile>
<id>jdk17</id>
<activation>
<jdk>1.6</jdk>
</activation>
<modules>
<module>simple-webapp</module>
</modules>
</profile>
你好,这是我的配置文件激活部分,怎么没效果?设置任何的版本的JDK都能激活simple-webapp模块???
我在apache的jetspeed的pom文件中,发现有这样的结构:
profile/build/plugins/plugin
请问这里出现的build怎么理解?
1) mvn install代表什么? 他将项目所依赖的artifact安装到本地仓库,那么在项目中定义的那些module有关系吗?我的意思是他在install这个周期是怎么讲一个一个的artifact装进去的
2) profile,这个profile如果重复了会怎么样?就是说一个多项目模块中,如果定义了多个相同名称的profile
说实话我没看懂你的问题,这里只能尽量回答了。
1) 我猜测你指的是多模块项目,maven构建多模块项目时,会根据依赖关系和继承关系计算反应堆(reactor)顺序,然后根据这个顺序执行你从命令行输入的mvn install命令,因此,每个模块会依次被安装到本地仓库中,至于反应堆顺序是什么,你可以查看构建输出。
2) 对于单个POM来说,不可能定义两个相同ID的profile(maven会报错),对于多模块项目中的两个模块,使用同样ID的profile不产生任何冲突(作用范围不一样),如果一个profile在父模块定义,而子模块有一个profile使用同样的ID,那么子模块定义的profile会覆盖父模块定义的profile。
PS:google讨论组被墙了,但是目前仍然可以使用邮件列表功能,发邮件至maven-zh@googlegroups.com即可。当然,前提是你已经是其成员。
1) mvn install代表什么? 他将项目所依赖的artifact安装到本地仓库,那么在项目中定义的那些module有关系吗?我的意思是他在install这个周期是怎么讲一个一个的artifact装进去的
2) profile,这个profile如果重复了会怎么样?就是说一个多项目模块中,如果定义了多个相同名称的profile
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
<profile> <id>dev</id> <activation> <activeByDefault>[color=red][size=medium]true[/size][/color]</activeByDefault> </activation> ... </profile>
貌似默认激活为true~~
已修复,谢谢
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
<profile> <id>dev</id> <activation> <activeByDefault>[color=red][size=medium]true[/size][/color]</activeByDefault> </activation> ... </profile>
貌似默认激活为true~~
mvn -P equinox,it clean install 同时执行equinox和it两个profile
谢谢补充!
1:多个profile,如何执行?
mvn clean install -P id1
这种方式不行啊。
2:通过属性去激活,这些属性我从哪里去取得呢?
我在服务器上执行uname -a,显示如下内容。
Linux rel_usf.nhncorp.cn 2.6.9-78.ELsmp #1 SMP Fri Jul 25 00:04:28 EDT 2008 i686 i686 i386 GNU/Linux
我该怎么添写那些属性啊,呵呵!!
<profile> <id>dev</id> <activation> <activeByDefault>false</activeByDefault> <activation> ... </profile>
少了一个 结束标记 <activation>
发表评论
-
我的书《Maven实战》
2010-11-12 13:09 69912我本来已经决定停止更新该博客了,但是为了推广下我的新书《Mav ... -
m2eclipse 0.10.0发布
2010-02-22 17:34 7941本文译自 http://www.sonatyp ... -
按需构建多模块,玩转Maven反应堆
2010-01-07 19:57 29417在多模块Maven项目中,反应堆(Reactor)是一个包含了 ... -
Maven仓库的布局
2009-12-14 08:54 11823注:本文节选自我正在 ... -
Maven3初窥
2009-11-10 16:28 20641Maven3的开发已经完成大半,本周末将发布alpha-3(T ... -
Nexus 1.4.0 发布
2009-10-29 17:22 6105新完成的用户故事: [ NEXUS-463] - ... -
archtype:generate出错?
2009-10-12 00:10 8075我们常常会使用mvn archet ... -
你最常用的构建和发布管理工具是什么?
2009-09-13 15:03 12897最近Eclipse社区进行了一项调查,关注社区如何使用Ecli ... -
策划编写《Maven实战》——初步目录
2009-09-09 03:42 81242010-08-27更新 关注 ... -
Maven最佳实践:持续集成
2009-08-21 17:14 0test -
Maven最佳实践:集成web容器
2009-08-21 17:13 0test -
《Maven权威指南》完整发布,带官方PDF
2009-07-06 00:45 673542010/04/29更新 :我已 ... -
Nexus Indexer 2.0:增量下载
2009-05-14 16:33 10184原文:http://www.sonatype.com/peop ... -
Maven最佳实践:版本管理
2009-04-29 00:04 124555什么是版本管理 首先,这里说的版本管理(version ma ... -
Maven最佳实践:Maven仓库
2009-04-01 17:42 110686什么是Maven仓库 在不用M ... -
Maven中央仓库的中国镜像
2009-03-31 22:53 45858(2011-01-27更新,由于私人原因,该镜像已关闭,在此致 ... -
Nexus入门指南(图文)
2009-03-15 23:07 147322Nexus介绍 Nexus 是Maven仓 ... -
“第十七章 编写插件” 发布
2009-03-09 17:16 3840又是漫长的一章内容,但如同本书的任何一章一样,由于原作者都是M ... -
Maven最佳实践:管理依赖
2009-02-23 16:50 28230"If I have seen further it ... -
m2e:为Eclipse引入Maven(下)
2009-02-04 16:19 30267译自:http://www.sonatype.co ...
相关推荐
在maven中实现多环境的构建可移植性需要使用profile,通过不同的环境激活不同的profile来达到构建的可移植性。
使用maven Profile实现多环境构建,详细请参考 :http://blog.csdn.net/u011781521/article/details/77899467
maven-profile-2.0.6.jar!!!
maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...
Maven 的41种骨架功能介绍,使用maven创建模板,能够更好的创建自己想要的项目结构
maven项目转换为eclipse项目,可能缺少的包。
Eclipse 安装maven的几种方式,以文档记录
NULL 博文链接:https://cjhz.iteye.com/blog/1721639
Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令
maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0maven3.0
主要介绍了maven profile动态选择配置文件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了使用maven profile指定配置文件打包适用多环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
maven 工具 maven 工具 maven 工具 maven 工具 maven 工具
maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程maven教程
Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,...于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。
maven
maven api
maven-profile-2.1.0.jar
maven-profile-2.0.2.jar