maven中的scope

这篇具有很好参考价值的文章主要介绍了maven中的scope。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

maven中的scope

这个scope,就像是 写java注解时的 @Retention(xxx) 的那个感觉,大约是一种 “生命周期”的感觉。
能体会到,理解到这个意思,基本上就够了。具体只是生效到哪个阶段而已。

1、compile:默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包时也要包含进去。
2、test:该依赖仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如:junit。
3、runtime:该依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段。
4、provided:该依赖在打包的时候可以不用包含进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude(排除)操作。
5、system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径(因为版权原因并不是所有依赖都从中央仓库下载的)
6、import: 一个dependencyManagement中的dependency,如果scope是import形式的,那么这个dependency不参与依赖传递。只是把dependency需要的依赖都取过来,像个占位符一样替换了就行。

以下为scope是system时举的例子:
例:有一个dm.jar在${basedir}/src/main/resources/lib目录下:

<dependency>
    <groupId>dm</groupId>
    <artifactId>dm</artifactId>
    <scope>system</scope>
    <version>1.0</version>
    <systemPath>${basedir}/src/main/resources/lib/dm.jar</systemPath>
</dependency>

如果是打包war包,并且打包完成后需要把本地的${basedir}/src/main/resources/lib/dm.jar和线上下载的依赖整合到一个目录的话,就还需要做如下配置:

    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <configuration>
        <webResources>
            <resource>
                <!--把本地lib里面的jar复制到lib-->
                <directory>src/main/resources/lib</directory>
                <targetPath>WEB-INF/lib/</targetPath>
                <includes>
                    <include>**/*.jar</include>
                </includes>
            </resource>
        </webResources>
    </configuration>
</plugin>

更多标签参考

pom.xml文件里

<packaging>pom</packaging>的作用

  1. 顶级的,<packaging>pom</packaging>是什么?
  2. <dependency>节点里,<packaging>pom</packaging>是什么?

重头戏,<type>pom</type> 怎么理解?
maven中的scope,idea设置/maven依赖下载/windows快捷键,java,spring boot,servlet

我们从maven仓库下载下来的依赖有的是只有pom文件没有jar包的,这时候如果需要依赖这个pom文件就需要写<type>pom</type>

上图一红一绿两条线,说了两件事。
红线的可以解释<type>里的值是什么意思。
绿线里的可以解释为什么有些时候<dependency>里面的<type>有时候不用加,有时候不加却报错加了就不报错(即通常为了获取继承来的pom.xml里面的<properties>里的各种包的版本号之类的信息,没有的话就不能确定版本,当然报错)。

例子: maven pom 文件中 dependence 的 type 为 pom 是什么意思?

在 Maven 的 pom 文件中,dependence 节点用于声明对其他项目的依赖。如果 dependence 的 type 属性设置为 “pom”,则意味着你依赖的是另一个项目的 pom 文件,而不是实际的项目的编译后的代码或者二进制文件。

这种情况通常出现在你希望继承另一个项目的配置信息,而不需要实际依赖该项目的代码时。例如,你可能希望将你的项目与另一个项目使用相同的依赖版本,或者使用相同的插件配置。在这种情况下,你可以在自己的 pom 文件中声明对另一个项目的 pom 文件的依赖,并在自己的 pom 文件中继承该项目的配置信息

<project>
  <!-- 省略其他信息 -->
  <dependencies>
    <!-- 依赖另一个项目的 pom 文件 -->
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>other-project</artifactId>
      <version>1.0</version>
      <type>pom</type>
    </dependency>
  </dependencies>
</project>

在这个例子中,你的项目会依赖另一个项目的 pom 文件,但不会依赖另一个项目的代码。

build里的resource标签

resources中的***/*区别

  • \*指resource路径下,并不包含resource子文件夹下的文件
  • **/*指resource路径及其子路径下所有文件
  1. include、exclude可以配置多个路径,但路径不要重复,也别包含

include说明:打包时只保留include标签下的文件

include 的<filtering>说明:

  • true:可以规定指定路径下的xml包括properties文件在编译期,将文件指定的${key}替换掉;
    • 例如: 中我们使用${jdbc.url}来代表数据库地址。那么在Maven编译时,就会将${jdbc.url}替换成真正的地址。
    • false:不替换

exclude说明: exclude规定路径下的文件不被打包

exclude 的<filtering>说明

  • true: 不在exclude规定路径下,其他的文件由include决定
  • false: 不在exclude规定路径下,其他的文件不由include决定

include 、exclude二者可以配合使用,划定打包范围

默认情况下,maven打包会将资源目录(一般是src/main/resources)中的资源文件打包进去,而如果在pom.xml中配置了resources标签,则默认的资源打包策略就被覆盖掉了,只会打包resources标签中配置的资源文件**

基本结构:

<build>
    <resources>
        <resource>
            <directory>src/main/resource</directory>
	        <includes>
	             <include>...</include>
	        </includes>
	        <filtering>false</filtering>
        </resource>

        <resource>
            ...
        </resource>
    </resources>
<build>

案例:

<build>
	<resources>
			   <!-- 案例 1. 打包时只留下Java目录以及子目录下 .txt类型文件 -->
	           <resource>
	               <directory>src/main/java</directory>
	               <includes>
	                   <include>**/*.txt</include>
	               </includes>
	           </resource>
	           
	           <!-- 案例 2 保留 resources 下所有资源,不配置默认就是保存所有 -->
	           <!-- 案例 2.1 打包时留下resource目录以及子目录下所有文件 -->
	 			<resource>
	       	    	<directory>src/main/resources</directory>	         
	           </resource>
	           
				<!-- 案例 2.2 打包时留下resource目录以及子目录下所有文件,同案例二效果 -->
				<resource>
	       	    	 <directory>src/main/resources</directory>
	       	    	 <includes>
	                   <include>**/*.*</include>
	                   <include>**/*</include>   
	                </includes>	         
	           </resource>

				<!-- 案例 3. 打包时只留下resource目录以及子目录下的.yml文件 -->
				<resource>
	       	    	 <directory>src/main/resources</directory>
	       	    	 <includes>
	                    <include>**/*.yml</include>	                   
	                </includes>	         
	           </resource>

				<!-- 案例 4. 打包时除了resource目录以及子目录下的.yml文件,其他文件都会保留下来 -->
				<resource>
	       	    	 <directory>src/main/resources</directory>
	       	    	 <excludes>
                    	<exclude>**/*.yml</exclude>
                	</excludes>	         
	           </resource>
  					 
	</resources>
</build>

maven的打包类型

pom 项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

项目的打包类型

<packaging>pom</packaging>
<packaging>jar</packaging>
<packaging>war</packaging>

packing默认是jar类型,

  • pom ---------> 父类型都为pom类型
  • jar ---------> 内部调用或者是作服务使用
  • war ---------> 需要部署的项目

如果有时候springboot启动不了,那么有时候是启动类所在模块的pom.xml中jar改成了pom,改回来一般能启动.

mavensettings.xml标签

mirror标签
Maven 在构建 Spring Boot 项目时会根据 元素中定义的顺序依次尝试使用镜像源。如果找到可用的镜像源,将使用该镜像源进行构建。如果所有镜像源都不可用,将回退到默认的 Maven 中央仓库。文章来源地址https://www.toymoban.com/news/detail-634632.html

到了这里,关于maven中的scope的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决IDEA Maven 下载依赖包速度过慢问题

    解决IDEA Maven 下载依赖包速度过慢问题 ,jar包下载过慢,有一部分网络原因,很大一部分是因为需要请求到国外镜像仓库,响应比较慢 右键点击项目,找到maven,选择 Open ‘settings.xml’或者Create ‘settings.xml’ 将以下代码粘入文件中,重启idea即可提高速度 idea超级镜像库,这

    2024年02月11日
    浏览(67)
  • IDEA中Maven爆红,依赖下载失败的最全解决方案

    目录 1. 先排查Maven的配置信息是否正确 1.1 maven的settings.xml中的配置 1.2 idea中配置maven  2. 可能是网络卡顿原因,导致依赖下载失败,或者依赖下载不全,依赖包丢失 2.1 网络卡顿 2.2 maven依赖jar包下载不全,导致依赖包丢失。 3. 检查jdk版本是否正确,因为有些依赖与jdk版本不

    2024年02月16日
    浏览(52)
  • 解决maven 在IDEA 下载依赖包速度慢的问题

    当我们用idea下载maven的依赖的时候会很慢 原因:movn可能时因为idea用的时外部的镜像源 解决方法:在idea界面按两下shift建,然后搜索 setting.xml 产出原有的内容复制以下内容就后重启 当再次idea在使用idea下载依赖报包的时候速度就可以提升很多了 当我们搜索后没有这个 setti

    2024年02月07日
    浏览(55)
  • maven的依赖范围scope使用

    标签的位置:dependencies/dependency/scope 标签的可选值:compile/test/provided/system/runtime/import #①compile 和 test 对比 main目录(空间) test目录(空间) 开发过程(时间) 部署到服务器(时间) compile 有效 有效 有效 有效 test 无效 有效 有效 无效 #②compile 和 provided 对比 main目录(空间

    2024年02月10日
    浏览(40)
  • idea中设置maven本地仓库和自动下载依赖jar包

    1.下载maven 地址:maven3.6.3 解压缩 在D:apache-maven-3.6.3-binapache-maven-3.6.3目录下新建文件夹repository 打开apache-maven-3.6.3-binapache-maven-3.6.3conf文件中的settings.xml编辑: 新增本地仓库路径 localRepository中是maven3.6.3解压的路径 新增maven下载镜像【此步即为后续idea自动下载依赖jar包】:

    2024年02月11日
    浏览(43)
  • 【亲测有效】解决idea中maven项目的pom文件不会自动下载jar包问题 + 更新不完整依赖命令

    一杯茶,一袋烟,一个bug改一天,唉~ 一天下来整个人都麻了; 废话不多说了,作者创作本文旨在使用言简意赅的语言为同样遇到此问题的伙伴们尽快解决困难,少走弯路。 看问题:idea中maven项目的pom文件不会自动下载jar包 setting —— maven —— 去掉work offline 的勾 Settings -

    2024年02月06日
    浏览(48)
  • maven中的scope

    这个scope,就像是 写java注解时的 @Retention(xxx) 的那个感觉,大约是一种 “生命周期”的感觉。 能体会到,理解到这个意思,基本上就够了。具体只是生效到哪个阶段而已。 1、 compile :默认值,可省略不写。此值表示该依赖需要参与到项目的编译、测试以及运行周期中,打包

    2024年02月14日
    浏览(32)
  • 关于Idea 下载Maven依赖时出现的 “unexpected markup <!d (position: START_DOCUMENT seen \r\n<!d... @2:4) “ 错误.

    平时Maven镜像一直使用的阿里云提供的Maven国内镜像. 亦或者使用的是该镜像域名的其他镜像 但最近下载依赖时经常会出现 \\\"unexpected markup !d (position: START_DOCUMENT seen rn!d... @2:4) \\\"错误 原因是因为下载的依赖中的Pom文件格式有问题,里面的内容类似于这样: 整体内容是个html网页,但

    2024年02月16日
    浏览(29)
  • idea查找maven所有依赖

    缺点是只有依赖,没有版本 settings–plugins–搜索maven helper并安装 安装后打开pom.xml文件会有依赖解析 勾选conflict就是有冲突的依赖 选中all dependencies as list则所有依赖一列展示 选中all dependencies as tree 则所有依赖树形展示 缺点,如果是多模块项目,则必须一个一个pom.xml文件的

    2024年02月11日
    浏览(43)
  • idea 一直卡在maven正在解析maven依赖

    修改maven Importing的jvm参数

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包