宾馆网站建设,网站 数据备份,桂林象鼻山水月洞,个人网站可以备案几个maven https://www.bilibili.com/video/BV14j411S76G?p1vd_source5c648979fd92a0f7ba8de0cde4f02a6e 1.简介
1.1介绍
Maven翻译为专家、“内行”#xff0c;是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念#xff0c;Maven利用一…maven https://www.bilibili.com/video/BV14j411S76G?p1vd_source5c648979fd92a0f7ba8de0cde4f02a6e 1.简介
1.1介绍
Maven翻译为专家、“内行”是Apache下的一个纯Java开发的开源项目。基于项目对象模型(缩写:POM)概念Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven是一个项目管理工具可以对Java项目进行构建、依赖管理。Maven也可被用于构建和管理各种项目例如C#RubyScala和其他语言编写的项目。Maven曾是Jakarta项目的子项目现为由Apache 软件基金会主持的独立Apache 项目。
通过Maven可以帮助我们做:
项目的自动构建包括代码的编译、测试、打包、安装、部署等操作。依赖管理项目使用到哪些依赖可以快速完成导入。 我们之前并没有讲解如何将我们的项目打包为Jar文件运行同时我们导入依赖的时候每次都要去下载对应的Jar包这样其实是很麻烦的并且还有可能一个Jar包依赖于另一个Jar包就像之前使用JUnit一样因此我们需要一个更加方便的包管理机制。
Maven也需要安装环境但是IDEA已经自带了Maven环境因此我们不需要再去进行额外的环境安装(无IDEA也能使用Maven但是配置过程很麻烦并且我们现在使用的都是IDEA的集成开发环境所以这里就不讲解Maven命令行操作了我们直接创建一个新的Maven项目即可。
1.2创建一个maven项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9m7b332o-1690375786144)(maven学习.assets/image-20230726165124192.png)]
其实本身就是一个Java项目。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F1OMCZvc-1690375786145)(maven学习.assets/image-20230726165304209.png)]
maven的项目结构
test是集合junit结合在一起进行使用的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5yrges6P-1690375786145)(maven学习.assets/image-20230726165319415.png)]
1.3组成
groupId 、artifactId 、 version这三个元素合在一起用于唯一区别每个项目别人如果需要将我们编写的代码作为依赖那么就必须通过这三个元素来定位我们的项目我们称为一个项目的基本坐标所有的项目一般都有自己的Maven坐标因此我们通过 Maven导入其他的依赖只需要填写这三个基本元素就可以了无需再下载Jar文件而是Maven自动帮助我们下载依赖并导入。
groupId一般用于指定组名称命名规则一般和包名一致比如我们这里使用的是org.example 一个组下面可以有很多个项目。artifactId 一般用于指定项目在当前组中的唯一名称也就是说在组中用于区分于其他项目的标记。定0 –version 代表项目版本随着我们项目的开发和改进版本号也会不断更新就像LOL一样每次赛季更新都会有一个大版本更新我们的Maven项目也是这样我们可以手动指定当前项目的版本号其他人使用我们的项目作为依赖时也可以根本版本号进行选择这里的SNAPSHOT代表快照一般表示这是一个处于开发中的项目正式发布项目一般只带版本号)
基本的参数
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdmaven_study/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/properties/project导入别的依赖的话本质就是导入
groupIdxxx/groupId
artifactIdxx/artifactId
versionxxx/version创建一个结点可以导入我们需要的依赖。
dependencies/dependencies下载个依赖为例
中心仓库几乎存储了所有的依赖一般的话都会找到的必须是联网的
dependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.26/versionscopeprovided/scope/dependency/dependencies使用我们的导入的依赖
Data
AllArgsConstructor
NoArgsConstructor
public class User {
private Integer id;
private String name;
private String password;}创建测试文件
public class TestMain {public static void main(String[] args) {System.out.println(你好);User usernew User();user.setName(张三);user.setPassword(123465);user.setId(1);System.out.println(user.toString());}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jNZiG99u-1690375786146)(maven学习.assets/image-20230726170347115.png)]
1.4仓库 下面的这个网站可以告诉你常见的依赖的地址用到什么就可以搜索什么。 https://mvnrepository.com/ 仓库的基本原理图
本地仓库就是我们默认配置的默认是m2。可以配置成自己的仓库的地址。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OC7lH1z5-1690375786146)(maven学习.assets/image-20230726170056199.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y6lANXvK-1690375786147)(maven学习.assets/image-20230726165929502.png)]
本地有的话下次用到的时候会自动地进行导入地不需要再去下载了。默认先去本地仓库中去寻找依赖进行导入。
原先maven设置的仓库的地址是远程的现在需要换成国内的地址。 !--配置案例云的镜像--mirroridnexus-aliyun/idmirrorOf*,!jeecg,!jeecg-snapshots/mirrorOfnameNexus aliyun/nameurlhttp://maven.aliyun.com/nexus/content/groups/public/url/mirror或者是下面的形式都是一样的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fT2DZuSZ-1690375786147)(maven学习.assets/image-20230726170818427.png)]
此时下载依赖的时候全部的依赖全部是从国内的地址中去下载不需要从国外的地址中去下载了。
1.5依赖的作用域
1.依赖的基本属性 前面了解到了依赖的基本的形式 dependencygroupId/groupIdartifactId/artifactIdversion/version/dependency下面将会了解更多的属性
type依赖的类型默认就是jarscope依赖的范围重点。optional依赖是不是可选的。exclusions用来排除传递依赖的。b项目导入了a依赖但是我们不需要a中的xx依赖就需要进行排除
2.scope属性内容。决定了依赖的作用域的范围。
compile编译、运行和测试均有效。
provided在编译和测试的时候有效运行的时候无效。也就是说运行的时候不需要该依赖。像lombox在编译的时候用到编译完成之后生成代码了之后就转换成代码了不需要进行使用了。
runtime运行和测试有效。编译时候无效像jdbc。
test仅仅在测试时候有效。像junit依赖。
dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter/artifactIdversion5.8.2/versionscopetest/scope
/dependency3.编写测试类
public class TestJava {Testvoid test(){System.out.println(测试);}
}[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VVzkCEvA-1690375786147)(maven学习.assets/image-20230726172113396.png)]
4.添加连接数据库的文件
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.49/versionscoperuntime/scope
/dependencydependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.9/version
/dependency5.资源文件夹下内容的创建。 mybatis的基本教程 http://c.biancheng.net/mybatis/config.html ?xml version1.0 encodingutf-8?
!DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!-- 配置 --settingssetting namemapUnderscoreToCamelCase valuetrue/setting namecacheEnabled valuetrue//settingstypeAliasespackage name com.test.entity//typeAliasesenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLED!-- MySQL数据库驱动 --property namedriver valuecom.mysql.jdbc.Driver /!-- 连接数据库的URL --property nameurl valuejdbc:mysql://localhost:3306/test?characterEncodingutf8 /property nameusername valueroot /property namepassword valueroot //dataSource/environment/environmentsmappersmapper classcom.test.mapper.UserMapper//mappers
/configuration6.编写mapper
Mapper
public interface UserMapper {Select(select * from user where id#{id})User getUserById (String id);
}7.编写测试类
public class TestMain {public static void main(String[] args) throws Exception{SqlSessionFactory factorynew SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(mybatis-config.xml));SqlSession sessionfactory.openSession(true);UserMapper userMappersession.getMapper(UserMapper.class);System.out.println(userMapper.getUserById(1));}
}
补充一个要是只是一个本地jar怎么办呢。也就是远程没有这个jar的依赖。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSLPO6NM-1690375786148)(maven学习.assets/image-20230726174619121.png)]
1.6可选依赖
当项目中的某些依赖不希望被使用此项目作为依赖的项目使用时我们可以给依赖添加optional标签表示此依赖是可选的默认在导入依赖时不会导瓜可选的依赖:
https://www.bilibili.com/video/BV14j411S76G/?p3spm_id_frompageDrivervd_source5c648979fd92a0f7ba8de0cde4f02a6e
表示为true的话可以不导入这个依赖scope为test的话根本不需要设置
optionaltrue/optionalexclusions可以设置排除依赖。排除某个依赖。
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.9/versionexclusionsexclusiongroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactId/exclusion/exclusions
/dependency1.7创建父子项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vn4YVMJg-1690375786148)(maven学习.assets/image-20230726202031575.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXeyMifr-1690375786148)(maven学习.assets/image-20230726202210902.png)]
要是父子项目夫设置option为true不耽误子项目的继承。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h3RUFtvV-1690375786149)(maven学习.assets/image-20230726202250475.png)]
放到dependencies的全部都是强制继承的。
但是放到dependencyManagement不是强制继承的。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yh7kD3GD-1690375786149)(maven学习.assets/image-20230726202634362.png)]
子项目导入的时候不需要指定对应的版本号就可以。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1nn1C8Qs-1690375786149)(maven学习.assets/image-20230726202729991.png)]
1.8maven常用的命令 可以避免写命令行了 clean清理项目compile编译install是把项目构建下载到本地仓库validate验证项目的可用性。test测试所有位于test目录下的测试案例 测试类的名字必须是Test结尾例如MainTest测试方法上必须标注Test注解 package先跑测试方法执行完成之后才进行打包生成jar文件。如何将jar打包成一个可执行的文件。将第三方的依赖也打包到依赖包里面。需要配置插件的内容。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HmtqI985-1690375786150)(maven学习.assets/image-20230726204229538.png)] verify deploy发布到本地和远程仓库的公司一般有私服的。 site生成当前项目的发布站点。
对于存在依赖关系的项目的话a依赖于b打包a的话同时会把b打包进去。会生成两个jar文件