1、依赖范围【scope】:编译环境(main文件夹)、测试环境(test文件夹)、运行环境(打成的war包是否可用)
compile:测试依赖范围,缺省值上面的三个环境都可用,如log4j。
test:只争对测试classpath有效,如junit。
provided:只对编译环境和测试环境有效,运行阶段外部容器已提供,故不需要额外引入,如servlet-api。
runtime:运行时依赖范围。只对测试环境,运行环境有效,如JDBC驱动实现依赖,其在编译时只需JDK提供的JDBC接口即可,只有测试、运行阶段才需要实现了JDBC接口的驱动。
system:系统依赖范围。效果与provided的依赖范围一致。其用于添加非Maven仓库的本地依赖,通过依赖元素dependency中的systemPath元素指定本地依赖的路径。鉴于使用其会导致项目可移植性降低,一般不推荐使用。
import:导入依赖范围。该依赖范围只能与dependencyManagement元素配合使用,其功能是将目标pom.xml文件中dependencyManagement的配置导入合并到当前pom.xml的dependencyManagement中。
2、Maven工程jar包依赖报错:
可能本地Maven仓库或缓存被污染或损坏,导致Maven无法正确的使用现有依赖。(下载jar包丢包)
解决方案:当jar包下载失败时Maven会在本地仓库生产(lastUpdate文件),Maven检测到(lastUpdate文件)文件后不会重新下载jar包,如下载时没网,后来又有网了也不会下载成功。删除缓存文件,重新下载即可。
3、Build构建配置【打包时的额外配】:
如果在java文件夹中添加java类,会自动打包编译到classes文件夹下。
但是在java文件夹中添加xml文件,默认不会被打包。
resource下的配置文件会被打包到classes根目录下。
应用场景:mybatis中有时会将用于编写SQL语句的映射文件和mapper接口都写在src/main/java下的某个包中,此时映射文件就不会被打包。
<build>
<!---自定义打包名称->
<finalName>jar包名称.war</finalName>
<!--设置要打包的资源位置--> <resources> <resource> <!---设置资源所在目录-> <directory>src/main/java</directory> <includes> <!---设置包含的资源类型-> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources></build>
4、依赖传递:
非compile范围进行依赖传递
使用optional配置终止传递
依赖冲突(传递的依赖已经存在)
解决依赖冲突:路径最短者优先,路径相同,先声明优先。
手动排除依赖。
标签:Maven,依赖,java,文件,jar,笔记,maven,文件夹 From: https://www.cnblogs.com/record-100/p/18401929