`
bibithink
  • 浏览: 29761 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Maven Profile(一)-- Profile 简介

 
阅读更多
为了解决程序可移植性的问题,Maven 2.0 开始引入了 profile 的概念。
 
那什么是程序的可移植性问题呢?简单来说就是在一个地方构建和运行是成功的,但是在另一个地方构建或运行却失败了,这样的程序就出了可移植性问题。在基于 Maven 的 java 工程中,我们经常遇到的可移植性问题主要有如下几种:
  • 插件可能会被配置一些本地路径 
    • 比如 maven-protoc-plugin 这个插件需要配置一个 protocExecutable 属性来指定编译 proto 文件所用的 protoc 编译器路径,这是一个本地路径,而且不同机器上的路径有可能是不一致的。 
  • 一些依赖版本的变更也是不可避免的; 
    • 我在具体实践的时候就遇到这种坑爹的情况,公司有两个 hadoop 集群,且两个集群的 hadoop 版本不一致,因此我的 map-reduce 任务运行在不同集群的时候就需要配置不同的 hadoop 版本依赖。 
  • 工程的 artifact 名字也可能会被调整; 
    • 这种情况偶还没有遇到过。 
  • 你甚至可能需要在检测到某些特殊构建环境后需要包含整个构建插件。 
    • 比如说你的工程发现需要编译 proto 文件的时候,你就需要把 maven-protoc-plugin 这个插件引入进来,而其他时候这个是不需要的。
 
Maven 的 profile 机制是怎么解决上面的问题的呢?总的思路很简单,就是在构建 Maven 工程的时候动态插入、篡改 pom 配置。举个例子:
假设你的工程中使用到了 hadoop,其版本是 2.6.0,那么你在工程中的配置应该类似下面这样:
<properties>
    <hadoop.version>2.6.0</hadoop.version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
    </dependencies>
</dependencyManagement>
 
但突然悲催地发现另外一个 hadoop 目标集群的版本是 2.0.0-cdh4.1.2,怎么办?这时候 profile 就派上用场了,我们可以像下面这样在 pom.xml 中配置一个 profile:
<profiles>
    <!-- 针对 apps 低版本 hadoop 集群的特别 profile 配置 -->
    <profile>
        <id>on-lower-hadoop</id>
        <properties>
            <hadoop.version>2.0.0-cdh4.1.2</hadoop.version>
        </properties>
    </profile>
</profiles>
 
在工程编译的时候触发这个 profile:
mvn clean install -P on-lower-hadoop
 
这样在构建的时候依赖的 hadoop 版本就被改成了 2.0.0-cdh4.1.2。
分享到:
评论

相关推荐

    maven-profile-2.0.6.jar

    maven-profile-2.0.6.jar!!!

    apache-maven-3.5.4-bin.tar.gz

    Apache Maven 是一个强大的Java项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建、依赖管理和项目信息管理。Maven 3.5.4是Maven的一个稳定版本,包含了多项改进和修复,为...

    apache-maven-3.6.2-bin.tar.gz

    Apache Maven 是一个强大的项目管理工具,它基于项目对象模型(Project Object Model,POM)的概念,用于管理和构建Java项目。Maven通过自动化构建过程,包括编译、测试、打包、部署等步骤,大大简化了开发流程。在...

    apache-maven-3.6.1-bin

    9. ** profiles**:Maven的profile功能允许根据不同的环境或条件选择不同的构建配置。 10. **命令行接口(CLI)**:用户可以通过命令行工具`mvn`执行Maven的各种操作,如`mvn clean install`来清理项目、编译源码并...

    apache-maven-3.3.3-src.zip

    此外,Maven可以通过设置不同的profile来适应不同的环境,如开发、测试和生产环境。 在Tika项目中,它是Apache的一个开源内容检测和解析库,广泛应用于文本提取、元数据获取和格式识别。Tika的构建依赖于Maven,...

    apache-maven-3.6.3-bin.tar.gz

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。在给定的"apache-maven-3.6.3-bin.tar.gz"压缩包中,包含的是Maven 3.6.3版本的Linux二进制发行版。这个版本是为在Linux操作系统环境下...

    Apache-maven-3.9.6-bin.tar.gz maven 3.9.6版本安装包

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建过程,管理依赖关系,并提供了统一的构建过程,使得开发人员的...

    maven-profile-2.0.jar

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

    apache-maven-3.3.9-bin.zip

    Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。Maven 3.3.9是该工具的一个稳定版本,提供了一系列改进和优化,旨在提高开发效率和构建过程的可靠性。 在Maven中,项目的...

    apache-maven-3.8.5-bin.tar+apache-tomcat-8.5.78.tar

    3. 配置环境变量:编辑`~/.bashrc`或`~/.bash_profile`,添加Maven和Tomcat的bin目录到PATH。 4. 初始化:对于Maven,执行`mvn -version`检查是否配置成功;对于Tomcat,启动`/path/to/tomcat/bin/startup.sh`。 5. ...

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

    Apache Maven 是一个强大的Java项目管理工具,主要用于构建、管理和整合Java源代码。它遵循约定优于配置的原则,使得项目构建过程标准化。Maven 使用一个统一的项目对象模型(Project Object Model,POM),通过POM...

    apache-maven-3.1.0-alpha-1-bin.tar.gz

    根据不同的profile,Maven可以使用不同的配置,例如使用不同的数据库连接或打包方式。 10. **Maven的依赖管理**:Maven自动解决项目依赖关系,管理依赖的版本冲突,确保项目构建的一致性。通过声明依赖的范围(如...

    apache-maven-3.3.3-bin.tar.gz

    Apache Maven 是一个强大的项目管理工具,广泛用于Java应用程序的构建、管理和依赖管理。Maven 3.3.3是该工具的一个稳定版本,提供了一系列改进和优化,旨在提高开发效率和构建过程的可靠性。 在Linux环境下,安装...

    maven-profile-2.1.0.jar

    maven-profile-2.1.0.jar

    maven-profile-2.0.2.jar

    maven-profile-2.0.2.jar

    maven-profile-2.0.1.jar

    maven-profile-2.0.1.jar

    maven-archetype-3.1.2-source-release.zip

    1. profile:Maven支持多环境配置,通过标签定义不同的环境变量和构建行为。 2. settings.xml:个人的Maven配置文件,包括仓库地址、镜像设置、用户属性等,可以覆盖全局配置。 六、总结 maven-archetype-3.1.2-...

    apache-maven-3.6.1-bin.zip

    Apache Maven 是一个强大的Java项目管理和综合工具,它简化了构建过程,通过标准化项目配置和依赖管理,使得开发人员能够更高效地工作。Maven 3.6.1 是该工具的一个稳定版本,提供了许多改进和优化,提高了整体性能...

    apache-maven-3.6.0-bin安装包和教程

    在Unix/Linux系统中,编辑`~/.bashrc`或`~/.bash_profile`文件,添加`export PATH=$PATH:/path/to/maven/bin`。 4. **验证安装**:完成环境变量设置后,打开命令行,输入`mvn -version`,如果正确安装,应该能看到...

Global site tag (gtag.js) - Google Analytics