首页 > 其他分享 >《Maven实战》读书笔记

《Maven实战》读书笔记

时间:2022-12-12 15:34:37浏览次数:45  
标签:实战 maven 项目 读书笔记 Maven 编译 src 目录


嗯,实训的时候第一次接触maven,感觉好方便,嗯,所以假期的时候刷这本书,好累呀,是心里不大舒服,加油,未来。

                                                                                 木开子  2019.18

第一章 Maven简介

Maven译为知识的积累,或行家。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理,Maven最大化的消除了构建的重复,抽象了构建生命周期,为绝大部分的构建任务提供了以实现的插件。

Make最早的构建工具,Ant最早构建tomcat,都为过程式。

Maven是申明式的,项目构建过程和过程各个阶段所需要的工作由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素。Maven就执行内置的构建过程,很大程度消除重复。

不重复发明轮子。

Maven与极限编程(XP):简单,交流与反馈,测试驱动开发(TDD),十分钟构建,持续集成,富有信息的工作区。

第二章,基于Eclipse的Maven的安装

maven的安装(软件)

 

将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕

 

《Maven实战》读书笔记_xml

 

 

 

1.1maven的目录介绍

 

 

 

《Maven实战》读书笔记_apache_02

1.2配置环境变量

 

 

 

MAVEN_HOME= F:\Software\apache-maven-3.3.9

Path=%MAVEN_HOME%\bin;... ...

 

《Maven实战》读书笔记_maven_03


 

 

 

1.3配置本地仓库

 将/资料/本地仓库/ Maven_Repository.zip  解压

复制 F盘根目录下

 

《Maven实战》读书笔记_xml_04

1.4 配置本地仓库

 

在maven的安装目录中 apache-maven-3.3.9/conf/settings.xml 配置本地仓库:将本地仓库地址复制到localRepsitory下。

 

《Maven实战》读书笔记_maven_05

1.5 测试maven安装成功

 

 

打开cmd本地控制台, 输入 mvn –version

《Maven实战》读书笔记_apache_06

 

第三章 ,Maven的使用入门

1,编写POM(Porject Object Model,项目对象模型):pom.xml定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.liruilong.mvnbook</groupId>
<artifactId>Hellow-word</artifactId>
<version>1.0-SNAPSHOT</version>

<name>Hellow-word</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<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>

project元素是所有pom.xml的根元素,子元素modelVersion指定pom模型的版本,groupId(定义项目属于那个组),artifactId(定义当前项目在组中的唯一ID),version(当前项目的版本号)三个元素定义了一个项目的基本坐标。name声明项目名称在Maven的世界里任何的jar,pom,war都是基于基本坐标区分。

默认情况下Maven假设项目的主代码位于src/main/java目录下。一般来说,项目中的Java类的包都应该基于项目的groupId和artifactId。即所在包名为groupld.artfactld。

idea无法创建java类:

Sources 一般用于标注类似 src 这种可编译目录。有时候我们不单单项目的 src 目录要可编译,还有其他一些特别的目录也许我们也要作为可编译的目录,就需要对该目录进行此标注。只有 Sources 这种可编译目录才可以新建 Java 类和包,这一点需要牢记。
Tests 一般用于标注可编译的单元测试目录。在规范的 maven 项目结构中,顶级目录是 src,maven 的 src 我们是不会设置为 Sources 的,而是在其子目录 main 目录下的 java 目录,我们会设置为 Sources。而单元测试的目录是 src - test - java,这里的 java 目录我们就会设置为 Tests,表示该目录是作为可编译的单元测试目录。一般这个和后面几个我们都是在 maven 项目下进行配置的,但是我这里还是会先说说。从这一点我们也可以看出 IntelliJ IDEA 对 maven 项目的支持是比彻底的。
Resources 一般用于标注资源文件目录。在 maven 项目下,资源目录是单独划分出来的,其目录为:src - main -resources,这里的 resources 目录我们就会设置为 Resources,表示该目录是作为资源目录。资源目录下的文件是会被编译到输出目录下的。
Test Resources 一般用于标注单元测试的资源文件目录。在 maven 项目下,单元测试的资源目录是单独划分出来的,其目录为:src - test -resources,这里的 resources 目录我们就会设置为 Test Resources,表示该目录是作为单元测试的资源目录。资源目录下的文件是会被编译到输出目录下的。
Excluded 一般用于标注排除目录。被排除的目录不会被 IntelliJ IDEA 创建索引,相当于被 IntelliJ IDEA 废弃,该目录下的代码文件是不具备代码检查和智能提示等常规代码功能。
通过上面的介绍,我们知道对于非 maven 项目我们只要会设置 src 即可。
如上图箭头所示,被标注的目录会在右侧有一个总的概括。其中 classes 虽然是 Excluded 目录,但是它有特殊性,可以不显示在这里。

maven实战:

Java项目构建步骤:

1. 打开软件,点击如图所示的【Create New Project】

2.  弹出的窗口中,选中【Maven】-》勾选【Create from archetype】->【...quickstart】->【next】

3.  弹窗中输入GroupID、AftifactId

4. 选择您自己的Maven,然后默认选择settings.xml和你的本地方库的位置

5.  步骤4后,输入你的项目名称

6. 点击右下角的【enbale auto-import】

等待依赖库下载完毕后,显示工程如图所示

代码编写完毕,使用Maven进行编译,输出信息:

clean告诉Maven清理输出目录target/,compile告诉Maven编译项目的主代码。

Maven先执行clean任务,删除target/目录。默认情况下,Maven构建的所有输出都在target/目录中,接着执行resources任务(未定义项目资源),最后执行compile任务。将项目的主代码编译到target/calss目录。

编写测试代码:在Java的世界里,由Kent Beck 和Erich Gamma建立的JUnit是事实上的单元测试标准。使用Junit,首先需要在pom文件中填加依赖,

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.liruilong.mvnbook</groupId>
<artifactId>Hellow-word</artifactId>
<version>1.0-SNAPSHOT</version>

<name>Hellow-word</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<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>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>

在代码中添加dependencies 元素,可以包还多个dependency元素申明项目的依赖,需要添加基本坐标。

对于值为test的元素scope为依赖范围,test时表示只对测试有效,不声明时,默认值为compile,即对所有代码有效。

一个典型的单元测试包含三个步骤,1,准备测试类数据。2,执行要测试的行为。3,检查结果。

第五章,坐标和依赖

1,何为Maven坐标:Maven定义了一组规则:世界上任何一个构件都可以使用Maven坐标唯一标识,Maven坐标元素包括grouId,artifactId,version,pack-ging,classifier。Maven内置了一个中央仓库的地址,该仓库中包含了世界上大部分的流行开源项目构件,在开发自己的项目也需要定义适当的坐标,是Maven强制要求的。

2,坐标详解:

<groupId>org.sonatype.nexus</groupId>
<artifactId>nexus-indexer</artifactId>
<version>2.0.0</version>
<packaging>jar</packaging>

grouId:定义当前Maven项目隶属的实际项目。

artifactId:该元素定义实际项目中的一个Maven项目(模块),推存使用实际项目名称作为artifacId的前缀,

version:该元素定义的Maven当前所属的Maven项目。

packaging:定义Maven项目的打开方式。默认为jar。

calssifier:用来帮助定义构建输出的一些附属构件。

前三个必须定义,packaging可选,classifier不能直接定义。

 

  1. Maven概述

《Maven实战》读书笔记_apache_07

  1. Maven的作用

《Maven实战》读书笔记_apache_08

  1. Maven的概念模型


《Maven实战》读书笔记_xml_09

 

《Maven实战》读书笔记_maven_10

  1. Maven的仓库

《Maven实战》读书笔记_xml_11

《Maven实战》读书笔记_apache_12

  1. maven的坐标

《Maven实战》读书笔记_maven_13

<!--导入junit的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>

1.6Maven酷站

我们可以到http://mvnrepository.com/搜索需要的jar包的依赖信息。

嗯,好吧,后面没有看,也不知道时间都去哪里啦!嗯,来青岛这边实训,老师讲了一些,所以这篇博客,总结老师的一些,写完。    2019.5.9 

 


 

 

标签:实战,maven,项目,读书笔记,Maven,编译,src,目录
From: https://blog.51cto.com/u_13474506/5929830

相关文章

  • 《java8高级应用与开发》读书笔记(二)
    写在前面本笔记涉及内容:类加载、反射、枚举、注解、国际化、格式化类加载:是指将类的class文件读入内存,并为之创建一个Java.lang.class对象。即当线程使用任何一个类时,系统都......
  • Go语言实战之数组的内部实现和基础功能
    写在前面嗯,学习​​GO​​,所以有了这篇文章博文内容为​​《GO语言实战》​​读书笔记之一主要涉及数组相关知识世上除了爹娘,再没有人是理所应当对你好的。——烽火戏诸侯......
  • 安装jar包到本地 maven 仓库
    很多时候网络不畅通,会造成maven编译失败,这个时候可能我们会把mvn源改成阿里或者其他源,但如果仍不能获取到依赖的jar包,可以尝试下这个办法。如果我们能够把jar包通过其他方......
  • Python爬虫实战,requests+openpyxl模块,爬取手机商品信息数据(附源码)
    前言今天给大家介绍的是Python爬取手机商品信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的......
  • 一篇文章教你实战Docker容器数据卷
    在上一篇中,咱们对Docker中的容器数据卷做了介绍。已经知道了容器数据卷是什么?能干什么用。那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例1:宿主机(......
  • Vue实战必会的几个技巧
    键盘事件在js中我们通常通过绑定一个事件,去获取按键的编码,再通过event中的keyCode属性去获得编码如果我们需要实现固定的键才能触发事件时就需要不断的判断,其实很......
  • 快速上手 Pytest + Requests + Allure2 测试框架实战技能
    随着分层测试策略和自动化测试的普及,测试框架和接口测试成为测试工程师需重点掌握的底层核心技能。在Python自动化测试领域,Pytest由于入门简单,扩展丰富,功能强大,易于维护......
  • 一篇文章教你实战Docker容器数据卷
    在上一篇中,咱们对Docker中的容器数据卷做了介绍。已经知道了容器数据卷是什么?能干什么用。那么本篇咱们就来实战容器数据卷,Docker容器数据卷案例主要做以下三个案例1:宿主......
  • Velero系列文章(四):使用Velero进行生产迁移实战
    概述目的通过velero工具,实现以下整体目标:特定namespace在BA两个集群间做迁移;具体目标为:在BA集群上创建velero(包括restic)备份B集群特定namespace:......
  • Awaitility同步异步工具介绍与RocketMQ中实战
    在编写测试用例的时候遇到有异步或者队列处理的时候经常会用到 ​​Thread.sleep()​​ 等待来进行测试。例如:​​DLedger​​ 测试选举的过程。当DLedgerLeader下线。......