一、Maven 的 profile 是什么?
profile:即maven项目的个性化配置,它可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。
配置形式,例如:
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
解释:
<id>dev</id>表示profile的id,在使用mvn package -P profileId 命令时用来标示具体的profile;
<activation>节点配置profile生效的条件。
二、profile的定义位置?
对于使用Maven3,我们可以有多个地方定义profile,定义的地方不同,它的作用范围也不同。
(1)定义在pom.xml中:这是针对于特定项目的profile配置,定义在pom.xml中的profile可以定义更多的信息。主要有以下这些: <repositories>、 <pluginRepositories>、<dependencies>、<plugins>、 <properties>、<dependencyManagement>、<distributionManagement>,还有build元素下面的子元素,主要包括:<defaultGoal>、<resources>、<testResources>、<finalName>。
(2)定义在settings.xml中:这又分为某一用户目录下的“.m2”目录下的settings.xml和Maven安装目录下的“conf/settings.xml”文件,如果是某一用户目录下的,则针对该用户的特定配置;如果是Maven安装目录下的,则针对所有用户所有项目的配置,具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。
(3)定义在profiles.xml文件中:如果在一个pom.xml中定义的profile太多,会不好管理,可以将其分离出来,单独放到profiles.xml文件中。
三、 profile的激活方式?
1. 使用activeByDefault设置激活。
指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活。
例如:
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
</profiles>
表示当我们调用mvn package的时候上面的profileTest1将会被激活。
2. 使用-P参数显示的激活一个profile。
即预先定义好多个profile,然后使用-P参数显式地指定激活某一个profile。
例如:
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
<profiles>
输入maven命令:mvn package -P profileTest1
就会激活profileTest1。
3. 在settings.xml中使用activeProfiles指定处于激活状态的profile。
我们可以在settings.xml中使用activeProfiles来指定需要激活的profile,这种方式激活的profile将所有情况下都处于激活状态。
例如:
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
</profiles>
这里的profile可以是定义在settings.xml中的,也可以是定义在pom.xml中的。这个时候如果我们需要指定profileTest1为激活状态,那么我们就可以在settings.xml中定义activeProfiles,具体定义如下:
<activeProfiles>
<activeProfile>profileTest1</activeProfile>
</activeProfiles>
4. 根据环境来激活profile。
profile一个非常重要的特性就是它可以根据不同的环境来激活,比如说根据操作系统的不同激活不同的profile,也可以根据jdk版本的不同激活不同的profile,等等。
例如:
4.1. 根据jdk来激活profile:
<profiles>
<profile>
<id>profileTest1</id>
<jdk>1.5</jdk>
</profile>
<profiles>
4.2. 根据操作系统来激活profile:
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
</profiles>
4.3. 根据系统属性来激活profile:
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<property>
<name>hello</name>
<value>world</value>
</property>
</activation>
</profile>
</profiles>
4.4. 根据文件是否存在激活profile:
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<file>
<exists>target</exists>
</file>
</activation>
</profile>
</profiles>
相应的,也有根据文件不存在来激活profile:
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<file>
<missing>target</missing>
</file>
</activation>
</profile>
</profiles>
四、查看当前已经激活的profile。
我们可以同时定义多个profile,那么在建立项目的过程中,到底激活的是哪一个profile呢?Maven为我们提供了一个指令可以查看当前处于激活状态的profile都有哪些:mvn help:active-profiles。
相关推荐
### Maven实战——入门篇 #### Maven简介与概念 Maven是一种强大的、跨平台的项目管理工具,主要用于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目还是大型的企业级应用,Maven都能...
《Maven实战》是一本专为Java开发人员设计的指南,深入浅出地介绍了Maven这一强大的项目管理和构建工具。Maven是Apache软件基金会开发的一个开源项目,它以XML文件格式定义项目,能够自动化构建、依赖管理和项目信息...
Maven 实战(361)_12804356.pdf
** Maven实战:所有源代码详解 ** Maven是一款强大的项目管理和构建工具,广泛应用于Java开发领域。...通过学习并掌握"Maven实战"中的源代码,开发者可以更好地应对复杂的项目构建挑战,实现高效且可维护的Java项目。
《Maven实战》一书设计了一个背景案例,后续章节围绕该案例展开,通过具体的项目构建实例,加深读者对Maven的理解和掌握。例如,如何使用Maven进行Web应用的构建、如何利用Hudson进行持续集成等。 #### 总结 Maven...
下面将详细讲解如何使用Maven Profile实现多环境构建。 首先,让我们理解什么是Maven Profile。Maven Profile是Maven中的一种机制,允许开发者定义一组可选的配置,这些配置可以在特定条件下被激活。每个Profile...
虽然目前它基本上是Java构建的事实标准,但我们也能看到新兴的工具在涌现,比如基于Goovy的Gradle,而去年Hibernate宣布从Maven迁移至Gradle这一事件更是吸引了不少眼球。在此之前,我也听到了不少对Maven的抱怨,...
Maven不仅可以管理项目的构建、报告、文档生成,还可以管理依赖、源码、文档、测试、打包、分发等,并提供了对应的插件机制,以支持更广泛的构建任务。 Maven的实战性强,意味着在学习和使用过程中,通常会结合大量...
Maven实战 好书 学习参考.pdf
Maven 实战(书签版) 影印版,影印规整,十分清晰,强烈推荐!
《Maven实战源码》是一本专为Java开发者设计的指南,旨在帮助初学者和有经验的开发者深入理解和掌握Maven这一强大的项目管理和构建工具。Maven不仅简化了项目的构建过程,还通过依赖管理和插件机制,使得软件开发...
《Maven实战》一书是Java开发者深入了解和掌握Maven构建工具的重要参考资料。该书的源代码涵盖了多个章节,包括ch-17、ch-3、ch-7、ch-8、ch-5、ch-10、ch-18和ch-12等,这些章节的内容广泛且深入,涉及了Maven的...
Maven作为Java项目管理工具,提供了一种强大的特性——Profile,来帮助开发者根据环境条件构建不同的部署包。这篇博客将详细解释如何利用Maven的Profile功能实现这一目标。 首先,我们需要理解Maven Profile的概念...
非常好的一本maven书 Maven实战 完整高清版
《Maven实战》徐晓斌 完整高清版.pdf
Maven——这一Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性,已经有无数的开源项目使用它来构建项目...
Maven实战].许晓斌.高清PDF扫描版.