pom文件中${project.basedir}的使用
作者:三水木00 发布时间:2021-12-24 04:24:11
${project.basedir}的使用
<project> 是 pom.xml 的根节点,project.basedir 就是根节点的下级节点,缺少配置的话就要自己定义一个。
这块配置就是定义自己的项目目录结构
Maven的六类属性,${project.basedir},${project.build.directory}
内置属性
主要有两个常用内置属性:basedir项目的根目录(包含pom.xml文件的目录),{basedir}项目的根目录(包含pom.xml文件的目录),basedir项目的根目录(包含pom.xml文件的目录),{version}项目版本
POM属性
用户可以使用该属性引用POM文件中对应元素的值
常用的POM属性包括:
${project.build.sourceDirectory}
:项目的主源码目录,默认为 src/main/java${project.build.testSourceDirectory}
:项目的测试源码目录,默认为 src/test/java${project.build.directory}
:项目构件输出目录,默认为 target/${project.outputDirectory}
:项目主代码编译输出目录,默认为 target/classes/${project.testOutputDirectory}
:项目测试代码编译输出目录,默认为 target/test-classes/${project.groupId}
:项目的 groupId${project.artifactId}
:项目的 artifactIdproject.version
:项目的version,与{project.version}:项目的 version,与project.version:项目的version,与{version}等价project.build.fianlName
:项目打包输出文件的名称。默认为{project.build.fianlName}:项目打包输出文件的名称。默认为project.build.fianlName:项目打包输出文件的名称。默认为{project.artifactId}-${project.version}
自定义属性
用户可以在POM的元素下自定义Maven属性
Settings属性
用户使用settings.开头的属性引用 settings.xml 文件中XML元素的值
Java系统属性
所有Java系统属性都可以使用Maven属性引用
环境变量属性
所有环境变量都可以使用以env.开头的Maven属性引用
在依赖中 使用pom变量
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>part-a</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>part-b</artifactId>
<version>${project-version}</version>
</dependency>
</dependencies>
在插件中使用pom变量
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.5</version>
<configuration>
<repositoryDirectory>${project.build.directory}/test-reports</repositoryDirectory>
</configuration>
</plugin>
自定义变量
<properties>
<db.driver>com.mysql.jdbc.Driver</db.driver>
<db.url>jdbc:mysql://localhost:3360/test</db.url>
<db.username>username</db.username>
<db.password>password></db.password>
</properties>
</profiles>
Maven属性默认只有在POM中才会被解析,因此需要让Maven解析资源文件中的Maven属性。Maven用maven-resources-plugin处理资源文件。它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。
Maven默认的主资源目录和测试资源目录的定义是在超级POM中,要为资源目录开启过滤,只要在此基础上添加一行filtering配置即可。
Filtering是maven resource插件的功能,作用是用环境变量,pom文件里定义的属性和指定文件里的属性替换属性文件的占位符。(超级pom在 apache-maven-3.3.9\lib\maven-model-builder-3.3.9.jar\org\apache\maven\model\pom-4.0.0.xml)
来源:https://www.cnblogs.com/water-1/p/11521209.html


猜你喜欢
- 一、饿汉式(静态常量)public class Face { private stat
- Unity2018已经把打包过程简化很多了我们只需要关心两个API:1.BuildPipline.BuildAssetBundles() 打
- 1.结构体类型C语言中的2种类型:原生类型和自定义类型,结构体类型是一种自定义类型。2.结构体使用时先定义结构体类型再用类型定义变量->
- 本文介绍spring-rest接口中的LocalDateTime日期类型转时间戳的方法。具体的代码参照示例项目 https://github
- 有时候我们需要在一个ArrayList的for循环中动态删除元素的需求, 废话不多说看代码List<Integer> list
- JOL简介JOL的全称是Java Object Layout。是一个用来分析JVM中Object布局的小工具。包括Object在内存中的占用
- 本文实例讲述了Android编程将Activity背景设置为墙纸的简单实现方法。分享给大家供大家参考,具体如下:1)代码方式Drawable
- 需求:之前项目一个变动,需要对3张mysql数据库表数据进行清洗,3张表表名不同,表结构完全相同,需要对这3张表进行相同的增、改、查动作,一
- 一、Redis分布式锁概念篇建议直接采用Redis的官方推荐的Redisson作为redis的分布式锁1.1、为什么要使用分布式锁 
- 协变协变概念令人费解,多半是取名或者翻译的锅,其实是很容易理解的。比如大街上有一只狗,我说大家快看,这有一只动物!这个非常自然,虽然动物并不
- 前言本文主要介绍的是关于C#中LINQ多条件JOIN时为什么可以使用匿名类的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细
- 一、前言ConcurrentHashMap的源码采用了一种比较独特的方式对map中的元素数量进行统计,自然是要好好研究一下其原理思想,同时也
- JAVA源码编译由三个过程组成:1、源码编译机制。2、类加载机制3、类执行机制我们这里主要介绍编译和类加载这两种机制。一、源码编译代码编译由
- 什么是分布式锁?在回答这个问题之前,我们先回答一下什么是锁。普通的锁,即在单机多线程环境下,当多个线程需要访问同一个变量或代码片段时,被访问
- 一个项目可能会有不同的环境,例如dev/stating/prod等,不同的环境的配置文件是不同的,如何根据环境快速的切换到对应的配置文件很重
- 命名空间:Windows.Data.Json在Windows Runtime中,可以使用Json类对获取的Json字符串进行操作,相比Dat
- 一、概述1、事务ACID特性事务将一系列的工作视为一个工作单元,它具有 ACID 特性:A:Atomicity 不可分性 也就是说
- 异常是程序运行中发生的错误,异常处理是程序设计的一部分。错误的出现并不总是编写应用程序者的原因,有时候应用程序会因为终端用户的操作发生错误。
- 一、饿汉式单例类public class Singleton { privat
- 本文实例讲述了Android播放器MediaPlayer实现均衡器效果。分享给大家供大家参考,具体如下:这几天在系统学习Android官方A