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

【摘】Maven中的Profile

 
阅读更多

一、定义Profile

  • pom.xml 中的profiles 元素,它包含了一个或者多个profile 元素。由于profile 覆盖了pom.xml 中的
    默认设置,profiles 通常是pom.xml 中的最后一个元素。
  • 每个 profile 必须要有一个id 元素。这个id 元素包含的名字将在命令行调用profile 时被用到。我们可以
    通过传给Maven 一个-P<profile_id>参数来调用profile。
  • 一个 profile 元素可以包含很多其它元素,只要这些元素可以出现在POM XML 文档的project 元素下
    面。

Maven profile 可以覆盖几乎所有pom.xml 中的配置。Maven POM 包含一个名为profiles 的元素,它包含了项
目的替代配置,在这个元素下面,每个profile 元素定义了一个单独的profile。每个profile 必须要有一个id,除此之外,它可以包含几乎所有你能在project 下看到的元素。

 

一个Profile 可以覆盖项目构件的最终名称,项目依赖,插件配置以影响构建行为。Profile 还可以覆盖分发配置;例如,如果你通过一个staging profile 发布一个构件到staging 服务器上,你就可以创建一个profile 然后在里面定义distributionManagement 元素。

 

<project>
	<profiles>
		<profile>
			<build>
				<defaultGoal>...</defaultGoal>
				<finalName>...</finalName>
				<resources>...</resources>
				<testResources>...</testResources>
				<plugins>...</plugins>
			</build>
			<reporting>...</reporting>
			<modules>...</modules>
			<dependencies>...</dependencies>
			<dependencyManagement>...</dependencyManagement>
			<distributionManagement>...</distributionManagement>
			<repositories>...</repositories>
			<pluginRepositories>...</pluginRepositories>
			<properties>...</properties>
		</profile>
	</profiles>
</project>

 

二、激活Profile

Maven 提供了一种针对不同环境参数“激活”一个profile 的方式,这就叫做profile 激活。激活配置元素下可以包含一个或者多个选择器:包含JDK 版本,操作系统参数,文件,以及属性。当所有标准都被满足的时候一个profile 才会被激活。例如,一个profile可以要求操作系统家族为Windoes,JDK 版本为1.4,那么该profile 只有当构建在Windows 机器上的Java 1.4 上运行的时候才会被激活。如果该profile 被激活,那么它定义的所有配置都会覆盖原来POM 中对应层次的元素,就像使用命令行参数-P 引入该profile 一样。 

 

例如:

<project>
	...
	<profiles>
		<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>
	</profiles>
</project>

 

你可以基于一个属性如environment.type 的值来激活一个profile。当environment.type 等于dev 的时候激活development profile,或者当environment.type 等于prod 的时候激活production profile。你也可以通过一个属
性的缺失来激活一个profile。下面的配置中,只有在Maven 运行过程中属性environment.type 不存在profile 才被激活。  例如:

<project>
	...
	<profiles>
		<profile>
			<id>development</id>
			<activation>
				<property>
					<name>!environment.type</name>
				</property>
			</activation>
		</profile>
	</profiles>
</project>

 

三、外部Profiles文件

要定义名部的Profiles文件,只需要在${baseDir}下定义一个profiles.xml文件即可,文件的内容结构大约是:

<profiles>
	<profile>
		<id>development</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<configuration>
					<debug>true</debug>
					<optimize>false</optimize>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
	<profile>
		<id>production</id>
		<build>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<configuration>
					<debug>false</debug>
					<optimize>true</optimize>
					</configuration>
				</plugin>
			</plugins>
		</build>
	</profile>
</profiles>

 

三、用户特定的Profile和全局的Profile

要定义用户特定的Profile,只需要配置系统用户目录下的~/.m2/settings.xml;要配置全局Profile,需要配置Maven_Home/conf/settings.xml。

 

四、列出活动的Profile

用户可以在以下四个地方配置Profile

  1. pom.xml
  2. profiles.xml
  3. ~/.m2/settings.xml
  4. Maven_Home/conf/settings.xml

可以通过命令: 

$ mvn help:active-profiles

得到所有活动的profile

 

分享到:
评论

相关推荐

    maven profile多环境配置

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

    maven-profile-2.0.6.jar

    maven-profile-2.0.6.jar!!!

    maven-profile-2.0.jar

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

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

    例如,我们可以在资源文件中使用`${db.url}`这样的占位符,然后在不同Profile中配置这个变量的值,这样就能生成包含不同数据库连接的部署包。 总结来说,Maven的Profile功能是实现多环境构建的关键,通过它我们可以...

    使用maven Profile实现多环境构建

    在Profile中,我们可以定义特定环境的依赖,例如不同环境可能需要不同版本的库。我们还可以配置插件的行为,比如在生产环境中启用代码覆盖率检查,而在开发环境中则不启用。此外,Profile还能用来管理资源文件,比如...

    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安装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 profile指定配置文件打包适用多环境的方法

    Maven Profile是Maven提供的一种配置管理机制,允许开发者在不同的环境中使用不同的配置文件。通过使用Maven Profile,可以轻松地在开发、测试、预演和生产等不同的环境中切换配置文件,避免了频繁修改配置文件的...

    maven中setting阿里云的详细镜像配置

    maven中setting阿里云的详细镜像配置,setting的配置细节 maven中setting阿里云的详细镜像配置,setting的配置细节

    Maven管理SpringBoot Profile详解

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

    Maven2中文使用手册

    Maven 的 profile 功能允许为不同的环境或目标设置不同的配置。 - **远程仓库(Remote Repositories)** 除了中央仓库,还可以配置其他的远程仓库来获取依赖。 - **自定义插件(Custom Plugins)** 如果 Maven ...

    Maven 中文介绍

    Maven 中文简介, 包含Maven 语法, 节点讲解, 使用方法.

    Maven 在Android中的应用

    12. **Maven Profile**: Maven的Profile特性允许开发者根据环境或需求定义不同的构建配置,比如针对开发和生产环境的差异。 13. **发布到Maven仓库**: 开发者可以将自己的Android库打包并发布到Maven仓库,供他人...

    maven3.6的安装包

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

    maven java项目实例

    在这个“maven java项目实例”中,我们将会探讨如何使用Maven进行Java项目的构建,特别是关于Maven Profile动态选择配置文件的实践。 首先,Maven的POM.xml文件是项目的中心,包含了项目的配置信息,如依赖管理、...

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

    在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...

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

    全局的 Profile 是定义在 Maven 安装目录下的“conf/settings.xml”文件中的。 配置动态打包 在项目的 Profile 中添加如下的 Profile 配置: ```xml &lt;profile&gt; &lt;!-- 本地开发环境 --&gt; &lt;id&gt;dev ...

    Maven 命令Maven 命令Maven 命令

    Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令Maven 命令

Global site tag (gtag.js) - Google Analytics