mvn实战总结-14章 属性及profile

属性

在pom文件中我们可以通过properties自定义属性,其实这只是mvn属性的一种,除此之外,mvn还有其他的属性。

内置属性

  1. ${basedir} 表示项目的根目录,既包含pom文件的目录
  2. ${version} 项目的版本

POM属性

  1. ${project.build.sourceDirectory} 项目的主源码目录 默认为 src/main/java/
  2. ${project.build.testSourceDirectory} 项目的测试源码目录 默认无src/test/java/
  3. ${project.build.directory} 构建的输出目录 target/
  4. ${project.outputDirectory} 项目的主代码编译输出目录 target/classes/
  5. ${project.testOutputDirectory} 测试代码编译输出目录 target/test-classes/
  6. ${project.groupId}
  7. ${project.artifactId}
  8. ${project.version} 与 ${version}等价
  9. ${project.build.finalName} 项目的打包输出文件的名称,默认为 ${project.artifactId}- ${project.version}

settings属性

用户使用以settings开头的属性引用settings.xml文件中的xml元素的值,如常用的${settings.localRepository}执行本地的仓库地址

java系统属性

所有java系统属性都可以使用mvn属性引用,如${user.home}指向了用户的家目录。用户可以使用mvn help:system查看所有的java系统属性。

环境变量属性

所有的环境变量都可以使用env.开头的mvn属性引用。例如${env.JAVA_HOME} 表示JAVA_HOME环境变量的值。用户可以使用mvn help:system 查看所有的环境变量

mvn Profile

不同的环境的构建可能是不同的,典型的情况就是数据库的配置,要想做到一个构件不做任何修改就能在任何环境中运行,往往是不可能的,为了让mvn构建在各个环境中方便的移植。mvn引入了profile的概念,在不同环境中的构建mvn可以使用不同的profile来激活不同的配置。类似于spring的profile文件。

<profiles>
	<profile>
			<id>dev</id>
			<properies>
					<db.user>dev</db.user>
			</properites>
	</profile>
	<profile>
			<id>test</id>
			<properies>
					<db.user>test</db.user>
			</properites>
	</profile>
</profiles>

激活profile

  1. 命令行激活
    用户可以使用mvn命令行参数-P加上profile的id来激活profile。多个id之间使用逗号分隔。
    mvn clean install -Pdev-x,dev-y

  2. settings文件显示激活
    如果用户希望某个profile默认一直处于激活状态,就可以配置settings.xml文件的activeProfiles元素

<settings>
	<activeProfiles>
		<activeProfile>dev-x</activeProfile>
	</activeProfiles>
</settings>
  1. 系统属性激活
    用户可以设置当系统某属性存在时,自动激活profile。
    如下:当test属性存在是生效。
<profiles>
	<profile>
		<activation>
				<property>
					<name>test</name>
				</property>
		</activation>
	</profile>
</profiles>

可以进一步配置当属性存在且值为x的时候,profile生效

<profiles>
   <profile>
   	<activation>
   			<property>
   				<name>test</name>
   				<value>x</value>
   			</property>
   	</activation>
   </profile>
</profiles>

命令行生命系统属性
mvn clean install -Dtest=x

  1. 操作系统环境激活
<profiles>
	<profile>
		<activation>
				<os>
					<name>Windows10</name>
					<family>Windows</family>
					<arch>x64</arch>
					<version>5.1.2600</version>
				</os>
		</activation>
	</profile>
</profiles>

这里的family包括Windows UNIX Mac等,而其他几项name arch version ,用户可以通过查看环境中的系统属性os.name,os.arch,os.version获得

默认激活
可以在定义profile的时候指定其默认激活,如果有任意一个其他的profile被激活了,默认的激活配置会失效。

<profiles>
	<profile>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
</profiles>
mvn help:active-profiles 当前激活的profile
mvn help:all-profiles 获取当前所有的profile 

profile的种类

根据具体的需要,可以在如下位置配置profile
pom.xml :指定当前项目有效
用户settings.xml 对当前用户有效
全局settings.xml mvn安装目录下conf/settings.xml 对本机上所有的mvn项目有效。

不同类型的profile中可以声明的pom元素是不同的,pom中的profile能够随着pom文件一起被提交到远程仓库,可以配置更多的元素。
POM中profile元素
pom外部的profile元素
pom外部的profile可使用的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值