Maven属性和使用

maven的属性可以理解为我们定义了一个变量,后面使用这个变量,如:
定义属性

	<properties>
		<name>zhangsan</name>
	</properties>

使用属性,其中${name}会被替换成zhangsan

<outputDirectory>src/main/${name}</outputDirectory>

maven属性

在maven中,系统内置了一些公共属性,如${project.basedir}表示当前项目的路径,如我们新建了一个maven项目,pom文件所在的路径即是项目路径,这里是:C:\TempData\my-workspace\fast-group
在这里插入图片描述

工程内置属性

当我们新建一个工程时,这个工程会内置一些属性,这里新建工程结构如下:

C:\TempData\ericsson-workspace
							--test-maven
								--src
									--main/java
									--main/resources
								--target
									--classes
								--pom.xml

对应上述工程结构如下,

内置属性描述对应项目映射
${project.basedir}项目根目录,pom.xml文件所在的目录C:\TempData\ericsson-workspace\test-maven
${project.build.directory}构建工作路径,默认为targetC:\TempData\ericsson-workspace\test-maven\target
${project.build.outputDirectory}构建输出目录,默认为target\classesC:\TempData\ericsson-workspace\test-maven\target\classes
${project.build.sourceDirectory}源代码所在目录,默认为src\main\javaC:\TempData\ericsson-workspace\test-maven\src\main\java

项目结构扩展的属性,当我们新建一个maven项目pom文件时候,产生如下内容

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.ericsson</groupId>
	<artifactId>test-maven</artifactId>
	<version>0.1</version>
	<packaging>jar</packaging>

	<name>test-maven</name>
	<url>http://maven.apache.org</url>
</project>

其中xml根节点为project,那么将产生工程属性,如${project.artifactId}在这里将是项目名:test-maven,${project.version}0.1,那么,当我们新建完一个工程后,我们将会有下面这些工程属性

内置属性描述对应项目
${project.groupId}组织名称,一般是网址名称反着写,如www.google.com.cn,将写成cn.com.googlecom.ericsson
${project.artifactId}项目名称,我们的项目名test-maven
${project.version}版本号0.1
${project.packaging}打包类型jar
${project.build.finalName}项目打包输出文件的名称,默认为${project.artifactId}-${project.version}test-maven-0.1.jar

这里只给出了一部分,其余的可根据pom文件结构自动推出,如${project.name}=test-maven
在这里插入图片描述

maven属性

由于maven安装以后,有全局配置settings.xml文件,在maven的安装目录下,
在这里插入图片描述

其中也会有配置文件
在这里插入图片描述

${settings.localRepository},这里对应我配置的C:\TempData\maven-workspace,由于大家配置的不一致,这里不做详解

工程自定义属性

可以自定义变量,也可以修改工程已有的变量,在properties属性节点下添加,如下所示

    <properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<currentVersion>${project.version}</currentVersion>	
		<spring.version>4.3.18.RELEASE</spring.version>
		<jetty.version>9.4.8.v20171121</jetty.version>
		<jersey.version>2.26</jersey.version>
        <jdbc.username>root</jdbc.username>
        <jdbc.password>123456</jdbc.password>
        <name>zhangsan</name>
		<project.build.timestamp>yyyyMMdd-HHmm</project.build.timestamp>
    </properties>
profiles分组属性,-P

我们构建maven项目的时候,根据传入id表示,可以取对应表示id下的环境变量,如mvn install -P dev,那么${jdbc.username}的值将为it

<profiles>
		<profile>
			<!-- 本地开发环境 -->
			<id>dev</id>
			<properties>
				<profiles.active>dev</profiles.active>
				<jdbc.username>it</jdbc.username>
			</properties>
			<activation>
				<!-- 设置默认激活这个配置 -->
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<!-- 发布环境 -->
			<id>release</id>
			<properties>
				<profiles.active>release</profiles.active>
				<jdbc.username>root</jdbc.username>
			</properties>
		</profile>
		<profile>
			<!-- 测试环境 -->
			<id>beta</id>
			<properties>
				<profiles.active>beta</profiles.active>
				<jdbc.username>admin</jdbc.username>
			</properties>
		</profile>
	</profiles>
传入参数属性,-D

如我们不要test阶段,我们可以使用参数控制clean package -Dmaven.test.skip=true

我们可以像运行java程序一样,通过参数形式传递属性,如mvn install -P dev -Dhaha=1234,这里配置对应的haha参数
在这里插入图片描述
再将参数输出
在这里插入图片描述
如果要发送多个变量,请使用多个空格分隔符加-D:
mvn -DpropA=valueA -DpropB=valueB -DpropC=valueC clean package

系统变量、环境变量属性

环境变量是根据系统环境来取的,这里我们可以通过命令行mvn help:system查看所有的属性

系统属性
在这里插入图片描述
系统属性直接配置${系统属性名},这里配置${sun.desktop},输出windows
在这里插入图片描述

环境属性
在这里插入图片描述
环境属性需要配置以env.开头的Maven属性引用,${env.环境属性名},这里配置${env.NUMBER_OF_PROCESSORS},输出4
在这里插入图片描述

maven使用

我们定义的属性可以在xml文件或者properties文件中使用

  • 在xml中使用如下,任意位置替换
    在这里插入图片描述
    相当于一个占位符使用
    在这里插入图片描述

  • properties文件中使用
    新增一个jdbc.properties文件,文件内容如下

jdbc.username=${jdbc.username}

定一个属性

<profiles>
		<profile>
			<!-- 本地开发环境 -->
			<id>dev</id>
			<properties>
				<profiles.active>dev</profiles.active>
				<jdbc.username>it</jdbc.username>
			</properties>
			<activation>
				<!-- 设置默认激活这个配置 -->
				<activeByDefault>true</activeByDefault>
			</activation>
		</profile>
		<profile>
			<!-- 发布环境 -->
			<id>release</id>
			<properties>
				<profiles.active>release</profiles.active>
				<jdbc.username>root</jdbc.username>
			</properties>
		</profile>
		<profile>
			<!-- 测试环境 -->
			<id>beta</id>
			<properties>
				<profiles.active>beta</profiles.active>
				<jdbc.username>admin</jdbc.username>
			</properties>
		</profile>
	</profiles>

配置一个resource文件的包含,配置属性filtering置为true,将替换classes下面的文件

       <resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                </includes>
			</resource>
		</resources>

执行命令:mvn clean install -P release,查看classes下面的文件
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Maven项目中使用GDAL,你需要添加以下依赖项到你的`pom.xml`文件中: ```xml <dependency> <groupId>org.gdal</groupId> <artifactId>gdal</artifactId> <version>3.0.1</version> </dependency> ``` 这将添加GDAL的Java绑定到你的项目中。请确保将`version`属性设置为你想要使用的GDAL版本。 下面是一个简单的示例代码,演示如何使用GDAL进行坐标转换: ```java import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.osr.CoordinateTransformation; import org.gdal.osr.SpatialReference; public class GDALExample { public static void main(String[] args) { // 初始化GDAL gdal.AllRegister(); // 打开输入数据集 Dataset inputDataset = gdal.Open("input.tif"); // 获取输入数据集的空间参考 SpatialReference inputSRS = new SpatialReference(inputDataset.GetProjection()); // 定义输出的EPSG:4479空间参考 SpatialReference outputSRS = new SpatialReference(); outputSRS.ImportFromEPSG(4479); // 创建坐标转换对象 CoordinateTransformation transform = new CoordinateTransformation(inputSRS, outputSRS); // 定义待转换的坐标 double[] srcCoord = new double[]{1234567.0, 9876543.0}; double[] targetCoord = new double[2]; // 进行坐标转换 transform.TransformPoint(targetCoord, srcCoord); // 输出转换后的坐标 System.out.println("Transformed coordinates: " + targetCoord[0] + ", " + targetCoord[1]); // 关闭数据集 inputDataset.delete(); } } ``` 在上述示例代码中,我们首先调用`gdal.AllRegister()`来初始化GDAL。然后,我们打开输入数据集(例如一个GeoTIFF文件),并获取其空间参考信息。接下来,我们创建一个输出的EPSG:4479空间参考,并使用`SpatialReference.ImportFromEPSG()`方法导入EPSG代码。然后,我们创建一个`CoordinateTransformation`对象,将输入和输出的空间参考传递给它。最后,我们定义待转换的坐标,并使用`CoordinateTransformation.TransformPoint()`方法进行坐标转换。 请确保将示例中的`input.tif`替换为你自己的输入文件路径,并根据需要调整EPSG代码和坐标转换的参数。 希望这可以帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值