maven学习笔记

该篇文章是在B站学习maven所记录的笔记,以及遇到的一些问题在此处记录,以防下次再次遇到
视频地址:黑马

maven基础

maven是一个项目管理工具

依赖管理

依赖管理就是maven对项目中jar包的管理过程。
传统工程我们直接把jar包放置在项目中,而maven工程真正的jar包放置在仓库中,项目中只用放置jar包的坐标。

仓库

仓库种类

本地仓库
远程仓库(私服)
中央仓库

仓库关系

1.当我们启动一个maven工程的时候,maven工程会通过pom文件中jar包的坐标去本地仓库里找。
2.默认情况下,如果本地仓库没有jar包,maven工程会自动去中央仓库下载jar包到本地仓库
3.在公司中,如果本地没有对应的jar包,会先从私服下载jar包
4.如果私服没有jar包,可以从中央仓库下载,也可以从本地上传

一键构成

maven自身集成了tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作。

常用命令

clean;对项目之前的构建信息进行清理
compile;对src中main.java下面的目录进行编译
test;对测试代码进行编译
package;把本地项目直接打包,打在了本地编译目录下
install;把包安装到本地仓库
deploy;把项目直接上传到私服

生命周期

清理生命周期:clean
默认生命周期:compile->test->package->install->deploy
站点声明周期

maven导入jar包

maven工程要导入jar包的坐标,必须要考虑解决jar包冲突
方式一:
第一声明优先原则:哪一jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包坐标下的依赖包可以优先进入项目中
方式二:
直接依赖,项目中直接导入的jar包就是该项目的直接依赖包
传递依赖,项目中没有直接导入的jar包可以通过项目直接依赖jar包传递到项目中
路劲近者优先原则:直接依赖路径比传递依赖路径近,那么最终项目进入的jar包会是路径近的依赖包
方式三:(推荐使用)
当我们要排除某个jar包下依赖包,在配置exclusions标签的时候,内部可以不写版本号
因此此时依赖包使用的版本和默认和本jar包一样
用例演示:第二天_04

maven学习遇到的问题

1.resources出现warning或出现不再支持源选项5,请使用6或更高版本报错

前者warning信息:

[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ maven_web01 ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

[INFO] skip non existing resourceDirectory D:\maven\IdeaProjects\maven_web01\src\main\resources

后者报错信息:
在这里插入图片描述
解决方法:在pom.xml中添加一下部分

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

2.运行tomcat:run报错

错误信息:
在这里插入图片描述
选取一段

严重: Compilation error
org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
	at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:342)
	at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:206)
	at org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:163)
	at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:96)
	at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49)
	at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:97)
	at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:167)
	at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2187)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:974)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1164)
	at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:366)
	at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:623)
	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:392)
	at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:429)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.base/java.lang.Thread.run(Thread.java:834)

http://localhost:8080/maven_web01打开后显示信息:
在这里插入图片描述
解决方法:添加tomcat7
在pom.xml中添加

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8888</port>
                </configuration>
            </plugin>

        </plugins>
    </build>

并且在
在这里插入图片描述中运行的不是tomcat:run而是tomcat7:run
这样运行以后没有报错,网址http://localhost:8888/maven_web01/显示如下(注意此时的端口号改了,因为上面依赖包中的端口号是8888)
在这里插入图片描述

3.除此之外再在上述plugins中添加org.apache.maven.plugins

在视频中这个是和上述tomcat7一起添加的,但是出现了一个警告,因此在此处记录一下

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <target>1.8</target>
                    <source>1.8</source>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

此时运行和2中的结果一直,但是出现了一个警告,内容如下:

Some problems were encountered while building the effective model for ZYJ:maven_web01:war:1.0-SNAPSHOT
'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 49, column 21
It is highly recommended to fix these problems because they threaten the stability of your build.
For this reason, future Maven versions might no longer support building such malformed projects.

截图是这样的:
在这里插入图片描述
解决方法:在上述中添加版本号,如下:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version><!--此处添加版本号,1.8对应的是3.1-->
                <configuration>
                    <target>1.8</target>
                    <source>1.8</source>
                    <encoding>UTF-8</encoding>
                </configuration>
 </plugin>

4.为了避免每次都要复制粘贴这么多,将其进行代码模板添加

在这里插入图片描述
打开设置(setting)->编译器(editor)->代码模板(Live Template)
首先点击1处,点击2.Template Group,取个新名字,这里是custom
再选择我们添加的custom目录,再点击1处,点击1.Live Template就会出现下面的部分,在缩写里取缩写的名字,再将上述文本粘贴到模板文本处
最后会出现下面的警告,点击Define,选择XML(X)
最后点击应用即可
这么做之后,在xml文件中输入jdk1.8按回车直接会出现对应的模板文本,就不用每次都复制粘贴了
具体的原理和过程也可以参考视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值