当前位置: 首页 > article >正文

maven常用的属性配置

maven常用的属性配置

  • packaging标签
  • properties标签
  • dependency标签
  • dependencyManagement标签

maven中一些常用的标签用法

packaging标签

<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<packaging>pom</packaging>

<packaging>标签用于指定当前项目的打包类型。常见的打包类型有:

  • jar:生成一个JAR文件,通常用于普通的Java项目。
  • war:生成一个WAR文件,通常用于Web应用。
  • ear:生成一个EAR文件,通常用于企业应用。
  • pom:Project Object Model的缩写。表示这个项目是一个POM项目,用于聚合多个模块的父项目或管理依赖的项目。

properties标签

用于定义项目的属性,这些属性可以在pom.xml文件中其他部分引用。使用属性有助于避免硬编码值,提高可维护性和灵活性。
除了自定义属性,还有一些常见的maven内置的属性。最常见的如:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

// 其他内置属性
1. 项目相关属性
${project.groupId}:项目的组ID。
${project.artifactId}:项目的工件ID。
${project.version}:项目的版本号。
${project.name}:项目的名称。
${project.description}:项目的描述。
${project.packaging}:项目的打包类型(例如jar、war)。
2. 构建相关属性
${project.build.directory}:构建输出目录(默认为target)。
${project.build.sourceDirectory}:源代码目录(默认为src/main/java)。
${project.build.testSourceDirectory}:测试源代码目录(默认为src/test/java)。
${project.build.resources}:资源文件目录。
3. 版本相关属性
${project.parent.version}:父项目的版本。
${project.parent.groupId}:父项目的组ID。
4. 其他常用属性
${project.basedir}:项目的基本目录。
${maven.version}:Maven的版本。
${maven.compiler.source}:编译源代码的Java版本。
${maven.compiler.target}:编译后的Java版本。

dependency标签

<!-- moduleA -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    <scope>provided</scope> 
</dependency>
  1. <optional>true</optional> 表示当前依赖为可选依赖,不会被自动传递给使用该项目的其他项目。所以改标签常用于减少传递依赖,避免依赖扩散。此处表示,引入了moduleA的项目不会强制依赖Lombok。
  2. <scope>provided</scope> 依赖只在编译阶段生效,打包时不会包含在最终的可执行文件中。
    例如一些通过反射实现的工具库,编译时自动生成模版代码,其功能是在开发阶段减少编码量,在项目运行期间并不需要这些工具库依赖。此时则可以使用该标签减少项目体积。

dependencyManagement标签

统一定义和管理项目的依赖,用于多模块项目,帮助子模块继承和管理依赖,避免重复声明依赖版本.

  • 集中管理依赖版本:在父pom.xml中定义依赖及其版本,子模块无需重复声明版本。
  • 控制依赖范围:可以在<dependencyManagement>中指定依赖的范围,例如compile、test等,这样子模块可以直接使用这些依赖而不需要指定范围。
  • 避免冲突:可以在父项目中统一管理依赖,减少不同子模块间的版本冲突

http://www.kler.cn/a/369958.html

相关文章:

  • C语言-----扫雷游戏
  • 【机器学习案列】探索各因素对睡眠时间影响的回归分析
  • 【k8s】k8s部署Argo CD
  • 99.6 金融难点通俗解释:股息率(DV)
  • 【设计模式-行为型】观察者模式
  • uiautomator2教程
  • 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 构建公共能力层》
  • 在visual Studio中引入Google Test进行单元测试
  • 2024年09月CCF-GESP编程能力等级认证C++编程五级真题解析
  • 鸿蒙应用开发实战-常用组件-图片组件
  • HTTP与HTTPS协议
  • C#:错误提示总结(一)
  • 2024-10月的“冷饭热炒“--解读GUI Agent 之computer use?phone use?——多模态大语言模型的进阶之路
  • 复习day
  • 通俗直观介绍ChatGPT背后的大语言模型理论知识
  • 苍穹外卖 将菜品缓存到Redis
  • CI/CD 的原理
  • 共享IPAM地址池实现多账号下地址统一规划管理
  • 2024年10月28日Github流行趋势
  • ssm005基于SSM框架的购物商城系统的开发与实现(论文+源码)_kaic
  • MLP预售开启,革新去中心化通信生态:智能手机与AI Agent齐上阵
  • 让Chrome⽀持⼩于12px 的⽂字⽅式有哪些?区别?
  • 低空经济产业链、政策、延伸品调研笔记
  • 14天速成前端 ------学习日志(已完结)------ 后端程序员学习了解前端
  • RabbitMQ 安装(Windows版本)和使用
  • Multimodal Embed 3:为人工智能搜索提供动力