大数据笔记17—java基础篇13(maven)

苟有恒,何必三更眠五更起; 最无益,莫过一日曝十日寒。

maven基本概念

是什么?

是一个项目的管理工具,基于maven去构建一个项目

作用:

1.管理项目中的jar包,释放我们空间,我们不需要去拷贝jar包,只需要给maven-jar包坐标,maven会自动从maven仓库中下载指定的jar包

2.maven提供了一套项目的生命周期:编译,测试,打包,部署,运行.

3.maven对工程分模块构建,提高开发效率.

特点:

1.每一个maven都有一个pom.xml(maven项目的核心配置文件):定义当前项目工程依赖jar包,本工程的坐标,打包运行,继承maven的各种插件.

2.maven通过坐标对项目工程所依赖的jar包统一规范管理**

3.maven管理项目的完整生命周期:清理,初始化,编译,测试,打包,部署,站点生成(项目运行的一个地方).**

Maven管理项目生命周期过程都是基于插件完成的

例如: 开发中使用的tomcat插件

jar java rar java工程的压缩包

war web rar web工程的压缩包

4.maven项目自己的项目结构,与之前构建的普通项目有一点不同

maven的javase的项目结构(记忆)

一个标准的maven的javase的项目结构 (记忆)
项目的名称:
	|src目录
		| main目录
			| java目录 : 编写java代码目录
			| resources目录 : 放置项目的配置文件
		| test目录
			| java目录: 用于放置测试的java代码
			| resources目录 : 放置项目的测试配置文件

	|pom.xml : maven项目的核心配置文件

一个标准的maven的java web 项目结构: (记忆)
比javase多出了红色框框里的东西
在这里插入图片描述

如何来构建一个web工程

首先创建跳过骨架的javase的maven工程 ,然后将资料中webapp目录直接拷贝到工程的main目录下
最后在pom.xml中 添加 < packaging >war< /packaging >(不带括号)

maven的仓库

仓库名称作用
本地仓库相当于缓存, 工程会从远程仓库(互联网)去下载jar包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找
远程仓库在公司内部架设一台私服, 其他公司架设一台仓库, 对外公开
中央仓库仓库中jar由专业团队(maven团队)唯一维护。中央仓库的地址: https://mvnrepository.com/

解释:

本地找不到去远程 远程会下载到本地

远程找不到去中央仓库 中央仓库下载到远程 远程在下载到本地

maven的坐标

作用:放大量的jar包,并且保留坐标位置

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

java坐标

  • dependency:生命这个命令包裹的是一个jar包的坐标

  • groupId : 定义当前maven项目名称

  • artifactId: 定义项目模块

  • version : 定义当前项目的当前版本

    怎么用:我们要找jar得坐标,去网站找到我们需要得jar版本,可以找到相应得坐标

配置环境变量

1解压到一个路径下(注意不要有中文,特殊符号和空格)

2配置环境变量

2.1在环境变量里面添加一个maven_home 添加上解压路径

2.2然后path里面要写Path=%MAVEN_HOME%\bin;

3集成本地仓库

3.1解压9g那个大文件 然后放到解压的路径文件中

3.2在解压文件中拿到路径 修改文件中的路径
在这里插入图片描述

4配置远程仓库

配置阿里云

<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>        
</miror>

5测试maven是否成功安装

cmd中 mvn -v

idea集合maven

在idea中settings中找到maven ->设置maven home directory 找到项目文件的路径

复制进去勾选下面两个

user settings file和Local repository

创建maven项目

无骨架(重点)

new maven 不勾选create from archetype

下一步 写artifactid 名字

点击创建即可

下一步 写groupid com.itcast (项目中的位置)和 artifactid maven_Day_xx名字

写xml文件中的依赖

有骨架(了解)

new maven 勾选create from archetype

选择一个webapp

下一步 写groupid (项目中的位置)和 artifactid 名字

点击创建即可

创建一个maven工程

无骨架

新建工程

new module maven

new maven 不勾选create from archetype
在这里插入图片描述

下一步 写artifactid 名字

点击创建即可

下一步 写groupid com.itcast (项目中的位置)和 artifactid maven_Day_xx名字

pom.xml

利用dependencies引用坐标

在里面写上dependency

例如写junit自动导入

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

junit如果引入错误 就去maven下把包删掉重新引入 就是重新下载即可

进入maven官网 引入代码

在这里插入图片描述

然后在maven中他就自己下载了 ,一定联网要啊

这就是jar包引入xml种

做测试新建com.itcast包.mavenDemo_01.java类
如果@test飘红 就去maven下把包删掉重新下载 刷新一下
在这里插入图片描述

在main下复制webapp

在xml中写入这行代码才算把web引入了

< packaging>war< /packaging>(里面要没有空格才对,如果我不写空格打不出来这个标签

写的东西都在dependencies中

接着往下写

这中间写上tomcat的依赖

然后run–tomcat

在网页中打开就可以看到HellloWorld代码

在生命周期里
在这里插入图片描述

创建maven项目

maven命令

clean是清除target中内容

在这里插入图片描述
compile:编译,将项目中src/main/java下的java文件编译成class文件.

test是测试以src/test/java类,有junit才执行测试操作.

package命令:打包命令,用于将项目打包操作.

install:安装命令,把工程安装到本地仓库.
(操作顺序clean->compile->package->install)

maven的常用命令: 
1) clean命令: 清除操作  
		作用: 
			将项目中已经产生的java文件编译的class文件进行清除	
			或者 清除项目中target文件中的内容

2) compile命令: 编译命令
	作用 : 对java代码进行编译(java -->class)操作

3) test命令:  测试命令
	作用: 对 src/test/java目录下的测试用户 执行操作

4) package命令: 打包命令
	有两大类包: 
		jar包: javase项目打包后就是一个jar包
		war包: javaweb项目打包后就是一个war包(war包可以直接丢到web服务器运行)
	注意:
		在执行package命令操作的时候: 首先会先执行 compile命令 然后执行package
5) install命令: 安装操作
	作用: 直接将当前工程 安装到 本地仓库中, 形成一个有坐标的jar包

	注意: 如果以后想让别人使用当前maven项目中类, 需要先将项目安装到本地仓库中

	在执行install的操作的时候: 首先先执行  compile命令 然后执行 package 最后执行install

依赖管理

maven中导入依赖:

导入依赖需要在maven项目的pom文件中, 使用 dependency 标签 实现依赖的导入操作
	    <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
        </dependency>

    导入依赖的步骤: 
    	1) 在中央仓库中搜索相应的软件的jar包的坐标位置
		2) 选择一个使用人数比较多的版本(相对而说比较稳定)的坐标
		3) 将这个坐标直接拷贝到pom文件中, 进行自动下载即可....
	如果在下载jar包的下载使用了, 或者发现要下载的jar包已经在maven的仓库中存在了, 但是就是无法导入到仓库中,

此时解决方案:

	在仓库中, 将这个无法导入的jar包目录直接删除, 让其进行自动联网重新下载一下即可

maven插件(jdk依赖,tomcat,lombok)

maven插件功能是maven中非常强大的功能, 基于插件, 可以扩展maven的功能
6.1: jdk的编译插件:
为甚要使用jdk插件呢? maven默认编译环境是 1.5,
实在有点太老了, 如果使用1.8的新特性, 1.5编译环境会直接报错
一定加build!!

	<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
    6.2: tomcat插件:  tomcat7服务端的插件

    	<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.2</version>
			<configuration>
			    <path>/</path>
			    <port>8080</port>
			</configuration>
		</plugin>
	注意: 对于maven仅支持 tomcat7的插件(官方)

在设置中会看到java版本默认是1.5,我们环境是1.8 改成1.8

在这里插入图片描述

加载jdk1.8

加载tomcat
在这里插入图片描述

idea安装lombok插件
@Data,是能帮助我们pojo类产生get,set方法,tostring方法…
@AllArgsConstructor:解决全参数构造
@NoArgsConstructor:解决构造函数空参

<dependency>
		 <groupId>org.projectlombok</groupId>
		 <artifactId>lombok</artifactId>
		 <version>1.18.8</version>
		 <scope>provided</scope>
</dependency>

在pojo中使用 lombok提供的注解:
@Data : get set toString
@AllArgsConstructor : 表示当前类自动实现一个全参构造
@NoArgsConstructor : 表示当前类自动实现一个空参构造
在这里插入图片描述

步骤二 : pom.xml到如lombok的jar包

jar包方法放到中

方法放到build中

<dependency>        
    <groupId>org.projectlombok</groupId>        				<artifactId>lombok</artifactId>        						<version>1.18.8</version>
</dependency>

导入依赖

1.要使用一个dependency标签写在pom中。可以实现导入依赖,每一对dependency得中间就是一个jar包得坐标。所有得最外面dependency用一对dependencies包裹

两个语句之间夹着需要导入的依赖关系,依赖包坐标

依赖的

具体jar包

版本号

例如:<dependencies><dependency>
<groupld>junit</groupld><artifactld>junit</artifactld><version>4.12</version></dependency>
</dependencies>

去https://mvnrepository.com查询我们需要jar包依赖坐标,然后复制到pom.xml文件

注意:如果你的依赖导入后,在工程里不好用,需要去本地库找到导入的jar包目录,然后删掉,之后包pom.xml文件里面相关的内容删除一下,然后保存一下,在复制进去刷新使本地库重新加载jar包,之后就可以使用了

依赖范围

依赖范围: 在maven项目添加了某个jar包之后, 这个jar包在什么时候是存在的

作用:如果我们什么范围都不声明,默认就是compile

  • compile:编译期 在编译的时候,测试阶段 ,打包阶段,都是有效的**(常用)**

  • provided: 在编译期和测试的阶段都是有效的,当进行打包后,这个包不存在

  • 这种依赖范围主要适用于:

      将当前打包这个jar包, 要使用在另一个容器中, 
      而另一个容器中已经有了当前这个jar包一些所依赖的jar
      此时在打包的时候, 就不需要将这些包导入到 jar包中
    
  • test:只在测试阶段有效,只在src/test/java目录下生效,在src/main编译和打包运行都无法使用**(常用)**

    • 只有在junit的时候使用这个方式
  • runtime:JDBC驱动,编译期不存在,只在测试和打包的时候有效

    • 适用于在编译期不需要导包的类,这可以用runtime(用的很少)

聚合项目

项目开发通常是分组分模块开发, 每个模块开发完成后, 要运行整个工程需要将每个模块聚合在一起运行, 此时需要多个工程合并在一个大的工程中,我们将这样的工程称为聚合工程
在这里插入图片描述

父工程主要功能

定义公共的插件-所有的子工程自动继承插件

用方式,对jar版本进行限定

定义公共的插件,立刻加载插件.所有的子工程都自动继承这个插件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值