首页 > 其他分享 >maven

maven

时间:2024-01-30 09:04:08浏览次数:32  
标签:Maven filtering 文件 maven pom resources 属性

Maven中各标签的作用

参考链接

install和deploy的区别

install是将jar包上传到本地仓库
deploy是将jar包上传到中心仓库

resources标签的用法详解(详解可以看siyuan)

自我总结resources标签的作用:

  1. 将一些资源纳入到打包文件中,如果不在resources标签中指定,会导致不能打包到jar包中。(哪些资源需要在resources标签中特别指定?)
  2. 将java中资源文件中的@xx@占位符替换成 maven中配置的属性值。

resources标签的filtering属性

在 Maven 项目中,src/main/resources 目录通常用于存放项目的资源文件,例如配置文件、属性文件等。Maven 提供了一些配置选项,可以用来过滤这些资源文件,其中就包括 filtering 属性。

filtering 属性被设置为 true 时,Maven 会在构建过程中对这些资源文件执行过滤操作。过滤操作指的是在将资源文件拷贝到目标目录之前,Maven 会查找并替换文件中的占位符,这些占位符通常是 ${propertyName} 形式的,其中 propertyName 是一个 Maven 属性。

例如,如果你在资源文件中有一个占位符 ${version},而且在你的 Maven POM 文件中定义了一个属性 version,那么在构建过程中 Maven 会将 ${version} 替换为实际的版本号。

以下是一个简单的 Maven POM 配置示例,演示了如何配置 filtering 属性:

Copy code
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

在这个示例中,filtering 被设置为 true,表示 src/main/resources 目录下的资源文件会被过滤。如果有需要过滤的属性,确保这些属性在 POM 文件中被定义,以便 Maven 替换相应的占位符。

这种过滤机制对于在不同环境中使用不同配置文件(例如开发环境和生产环境)非常有用。通过在资源文件中使用 Maven 属性,可以在构建过程中动态地替换这些属性,从而生成不同环境下适用的配置文件。

resources标签的delimiter属性

参考资料
delimiter的翻译是:分隔符

历史背景:

  1. 在pom文件内部对变量的应用,都通过${value_name}的方式,比如常见的${project.artifactId}。
  2. 在application.yml中对内部变量的引用,通常也是使用${value_name}的方式,比如常见的:${server.port}
    这样就导致了一个冲突,两种配置文件都用同义词要标识符,那yaml文件怎么引入pom中的变量呢?于是就有了resource.delimiter这个属性。

如果查看spring-boot-starter-parent中的属性栏,就可以看到赫然写着:<resource.delimiter>@</resource.delimiter>
这表示,在yaml中如果要引用pom中的属性,直接使用@标识符就行了,用法为@value_of_pom

这样,就出现了第三种变量的引用方式:

  • 在resources的yaml文件中引用pom中的变量时,通过@value_of_pom@进行引用(前提是开启了资源的过滤filtering)。

filtering作为maven-resource插件中的一个功能,它起作用的时机是在maven生命周期中的resource阶段,这是一个对资源做出处理,先于compile的一个阶段。

filtering:决定是否将resources目录下的文件中的tokens(即通过@val@标志的变量)进行参数替换。这里的参数主要有两个来源,一个是来自于pom文件中的properties属性,一个是来源于外部的.properties文件(作者认为这个文件不可与springboot中的配置文件混为一谈)。
那么如何引用外部的.properties文件呢?通过另一个标签下的进行路径的指定。

标签:Maven,filtering,文件,maven,pom,resources,属性
From: https://www.cnblogs.com/zhouer11dian/p/17995066

相关文章

  • Maven学习之路--依赖范围scope 对于该包的依赖范围作用域,取值有:test、compile、provid
    Maven学习之路--依赖范围scope对于该包的依赖范围作用域,取值有:test、compile、provided、runtime。scope默认取值为compile。\   <scope></scope>表示对于该包的依赖范围作用域,取值有:test、compile、provided、runtime。scope默认取值为compile。<scope>test</scope>。te......
  • IDEA2022 解决每次启动新项目maven配置就变为C盘问题
    1、打开一个空的IDEA如果打开IDEA默认进入之前的项目,可以选择先Closeproject退出项目 2、选择左侧的Customize,再点击Configure 3、在打开的Setting设置里面找到Maven配置Build,Execution,Deployment->BuildTools->Maven 修改后,保存即可; ......
  • Mac使用Idea配置传统SSM项目(非maven项目)
    前提软件IDEA2023.3.2JDK1.8Tomcat8Mysql5.7.1步骤打开Web项目配置JDK版本配置Modules中配置Sources的两个root,分别为WebRoot和src两个文件夹Libraries中配置WebRoot/WEB-INF/lib文件夹Facets中指定web的根目录和web.xml文件位置Artifacts配置tomcattoncat中配置artifacts的exp......
  • maven依赖的优先级
    优先级在Maven中,依赖的解析顺序和优先级如下:直接依赖优先级高于传递性依赖:如果你在项目的pom.xml中直接声明了某个依赖项,那么Maven会首先尝试使用这个直接声明的依赖项,而不考虑传递性依赖。直接依赖项的版本号会优先于传递性依赖。最近者优先:如果有多个传递性依赖解析......
  • 如何改Maven Dependencies的源码,如何把springboot组件的源码改造后使用
    由于springboot提供的源码有些地方不太符合预期,所以需要改动改动,这里就会说到,如何改MavenDependencies的源码。如何把springboot组件的源码改造后使用。v修改源码的几种方式直接在自己工程中建同包同类名的类进行替换采用@Primary注解排除需要替换的jar包中的类@Bean......
  • Maven
    Maven软件jarMaven是一款由Apahce软件基金会维护的一种工具,专门为Java项目提供构建和依赖管理支持。它通过一个中央仓库来管理项目所需的依赖项,并提供了一套标准的项目结构和框架生命周期。Maven使用pom.xml文件来描述项目的配置信息,包括项目的依赖、插件、构建目标等。Maven......
  • IDEA基于maven创建Java web项目
    idea:2022.2.3 IDEA新建项目,更改项目名称,有需要的可以更改项目地址,将Buidsystem从intelliJ更改到Maven 在pom.xml中添加依赖<dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><......
  • 变更maven本地仓库的位置
    maven本地仓库的默认位置在C:\Users\zbf\.m2\的repository中虽然可以通过maven的config/setting.xml配置,但是一些开发工具(IDEA)的maven本地仓库位置还是在默认的.m2中,虽然还是可以改,但是IDEA中的配置又有项目配置,新项目配置,配置中又有全局配置文件、用户配置文件,然后还可以重写。......
  • idea maven sprint boot打包常见问题
    ideaSpringBoot多模块打包(Unabletofindmainclass和父子依赖打包的错误) 1、子模块打包没有main方法就不要用spring-boot-maven-plugin来build了,因为它是需要main方法才能打包的<!--使用springboot的maven插件会报找不到主类错误--><build><plugins>......
  • MapStruct+Maven+Lombok问题NoSuchBeanDefinitionException、does not have an access
    概述先直接说我遇到的问题吧,SpringBoot应用启动失败:ERROR|org.springframework.boot.web.embedded.tomcat.TomcatStarter|onStartup|61|-ErrorstartingTomcatcontext.Exception:org.springframework.beans.factory.UnsatisfiedDependencyException.Message:Er......