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

激活Maven profile的几种方式

阅读更多

首先简单介绍下 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 使用者有帮助。

33
2
分享到:
评论
13 楼 wuliupo 2014-03-12  
zyp731 写道
两个问题:
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
12 楼 hhh099074082 2013-11-22  
              
                <profile>
<id>jdk17</id>
<activation>
<jdk>1.6</jdk>
</activation>
<modules>
<module>simple-webapp</module>
</modules>
</profile>

你好,这是我的配置文件激活部分,怎么没效果?设置任何的版本的JDK都能激活simple-webapp模块???
11 楼 hasayaqi 2012-08-10  
您好!
   我在apache的jetspeed的pom文件中,发现有这样的结构:

profile/build/plugins/plugin

请问这里出现的build怎么理解?
10 楼 juvenshun 2009-12-22  
kingxip 写道
有几个问题,maven中文论坛访问不了,我就这里请教了吧:
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即可。当然,前提是你已经是其成员。

9 楼 kingxip 2009-12-22  
有几个问题,maven中文论坛访问不了,我就这里请教了吧:
1) mvn install代表什么? 他将项目所依赖的artifact安装到本地仓库,那么在项目中定义的那些module有关系吗?我的意思是他在install这个周期是怎么讲一个一个的artifact装进去的
2) profile,这个profile如果重复了会怎么样?就是说一个多项目模块中,如果定义了多个相同名称的profile
8 楼 juvenshun 2009-12-21  
phoenixup 写道
引用
3. 配置默认自动激活。
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
    <profile>
      <id>dev</id>
      <activation>
        <activeByDefault>[color=red][size=medium]true[/size][/color]</activeByDefault>
      </activation>
      ...
    </profile>


貌似默认激活为true~~

已修复,谢谢
7 楼 phoenixup 2009-12-21  
引用
3. 配置默认自动激活。
方法很简单,在配置 profile 的时候加上一条属性就可以了,如:
    <profile>
      <id>dev</id>
      <activation>
        <activeByDefault>[color=red][size=medium]true[/size][/color]</activeByDefault>
      </activation>
      ...
    </profile>


貌似默认激活为true~~
6 楼 releasa 2009-10-09  
不错,我很喜欢。需要细细体会。。
5 楼 juvenshun 2009-03-10  
nbaertuo 写道

mvn -P equinox,it clean install 同时执行equinox和it两个profile

谢谢补充!
4 楼 nbaertuo 2009-03-10  
mvn -P equinox,it clean install 同时执行equinox和it两个profile
3 楼 zyp731 2008-10-30  
两个问题:
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

我该怎么添写那些属性啊,呵呵!!

2 楼 juvenshun 2008-08-20  
已修正,谢谢 
1 楼 xl515331 2008-08-20  
<profile>  
   <id>dev</id>  
   <activation>  
     <activeByDefault>false</activeByDefault>  
   <activation>  
   ...  
</profile> 


少了一个 结束标记 <activation>

相关推荐

    maven profile多环境配置

    Maven Profile 多环境配置 Maven 是一个流行的项目管理工具,广泛应用于 JAVA 相关的项目中。为了实现多环境的构建可移植性,Maven 提供了 Profile 机制。通过不同的环境激活不同的 Profile,可以达到构建的可移植...

    使用maven Profile实现多环境构建

    Maven Profile是Maven中的一种机制,允许开发者定义一组可选的配置,这些配置可以在特定条件下被激活。每个Profile包含了一组插件、依赖和配置属性,可以用于定制项目的构建过程。Profile通常定义在`pom.xml`文件的`...

    maven利用Profile构建不同环境的部署包

    激活Profile有多种方式:通过命令行参数 `-P`,在POM.xml中使用`activeProfiles`,或者通过Maven的settings.xml文件。例如,如果我们想构建开发环境的包,可以在命令行运行 `mvn package -Pdev`。 对于描述中的"WEB...

    使用maven profile指定配置文件打包适用多环境的方法

    使用Maven Profile指定配置文件打包适用多环境的方法主要包括以下几个步骤: 首先,在pom.xml文件中添加profile节点信息,以指定不同的环境 Profile,例如开发环境、测试环境、预演环境和生产环境等。每个Profile都...

    maven-profile-2.0.6.jar

    maven-profile-2.0.6.jar!!!

    eclipse安装maven插件,处理无Maven Pom editor打开方式问题

    在IT行业中,Eclipse是一款广泛使用的Java集成开发环境(IDE),而Maven是Apache软件基金会开发的一款项目管理和综合工具,主要用于构建、管理和依赖管理。在Eclipse中安装Maven插件,可以方便开发者在IDE内进行...

    maven-profile-2.0.jar

    maven项目转换为eclipse项目,可能缺少的包。

    Maven管理SpringBoot Profile详解

    Maven Profile 是 Maven 构建工具中的一种机制,它允许开发者在构建过程中针对不同的 Profile 环境执行不同的操作。Maven Profile 由 pom.xml 文件中的 `&lt;Profiles&gt;` 标签管理。每个 Profile 中可以设置 id(唯一...

    maven profile动态选择配置文件详解

    Maven Profile 是 Maven 提供的一种功能,可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个 Profile,然后每个 Profile 对应不同的激活条件和配置信息,从而达到不同环境使用不同配置...

    maven java项目实例

    Maven的Profile功能允许开发者定义一组可选的配置,这些配置可以在特定条件下激活,比如在不同的开发阶段或服务器环境中。 在实际开发中,我们通常会为每个环境创建一个Profile,例如: 1. `dev` Profile:用于...

    maven安装maven安装maven安装maven安装maven安装

    maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    ** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...

    apache-maven-3.5.0

    它通过定义项目的构建过程、依赖关系和项目信息,使得开发人员能够以一种标准化的方式管理项目。Maven 的核心概念是基于项目对象模型(Project Object Model,POM),这是一个XML文件,包含了项目的配置信息,如依赖...

    maven 3.8.8 解压安装版

    于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。 Maven的主要目标是允许开发人员理解完整的 在最短的时间内完成开发...

    maven3.6的安装包

    在 `.bashrc` 或 `.bash_profile` 文件中,添加一行 `export PATH=$PATH:$MAVEN_HOME/bin`。 **五、验证安装** 完成以上步骤后,重启命令行终端(或在Windows上打开新的命令提示符窗口),输入 `mvn -version`,...

    Mac的maven安装包apache-maven-3.6.3.zip

    它通过使用一种标准化的项目结构,自动处理构建过程中的依赖关系,简化了项目的构建和维护。 1. **下载与解压** 首先,你需要下载Mac的Maven安装包,即`apache-maven-3.6.3.zip`。这个压缩包包含了完整的Maven ...

    maven教程-maven教程-maven教程

    POM文件是Maven项目的配置中心,包含了项目的版本号、打包方式、项目依赖等信息。依赖管理方面,Maven采用坐标系统来唯一标识一个项目依赖,开发者只需要指定依赖的groupId、artifactId和version,Maven便能自动解析...

    apache-maven-3.5.2

    - 保存并激活更改:运行`source ~/.bash_profile`或`source ~/.zshrc`使新配置生效。 - 验证安装:在终端中输入`mvn -version`,如果正确安装,你应该能看到Maven 3.5.2的相关信息。 4. 使用Maven构建项目: - ...

Global site tag (gtag.js) - Google Analytics