首页 > 其他分享 >maven教程

maven教程

时间:2023-02-26 19:34:17浏览次数:51  
标签:教程 jar maven pom test com junit

maven教程

https://www.bilibili.com/video/BV1Ah411S7ZE/?spm_id_from=..search-card.all.click&vd_source=bad78f6ad207f56beda1ed67a8d89772

https://blog.csdn.net/Scxioi0/article/details/125732811

maven基础(黑马程序员 P1~P14)

1、maven简介

image-20230211163525659 image-20230212111841356 image-20230212111950262

2、安装

bin目录

image-20230212112358463

可以看出需要配置这两个环境变量

image-20230212112206830

image-20230212112243092

boot目录

maven的类加载器

image-20230212113016008

conf目录

核心配置

lib目录

类库

image-20230212120625536

看到下面的页面就说明maven配好了

image-20230212120659165

3、maven基本概念

仓库

image-20230212121120352 image-20230212121141480

坐标

image-20230212121622246

仓库配置

image-20230212122014633 image-20230212121957492

默认放在 用户名/.m2/repository

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

用户setting放在本地的repository:

image-20230212130220779

4、maven项目结构

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

    <!-- 基本设置 The Basics -->
    <groupId>com.itheima</groupId>
    <artifactId>project-java</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>

5、maven 项目构建命令

image-20230212132928164

5.1编译

在项目根目录输入

mvn compile

最终结果编译了一个源文件:

image-20230212140050702

生成文件:

image-20230212140158791

5.2清理

mvn clean

删除文件:

image-20230212140325657

5.3测试

mvn test

image-20230212140647649

测试后生成了两个测试报告文件夹:

image-20230212140728622

surefire-reports

主要是测试环境和测试结果

image-20230212141043427

test-classes

image-20230212141224452

5.4打包

mvn package

生成一个jar

image-20230212141354450

里面是只打包了源程序

image-20230212141439522

5.5 安装

部署把你打包的东西放到仓库里面

mvn install
image-20230212142544495

group id 决定他放的文件夹的层次

6、插件创建工程

image-20230212142810348
mvn archetype:generate -DgroupId=com.itheima -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinterativeMode=false

自动生成:

image-20230212143305433

pom.xml里面默认带着junit

image-20230212143505111

默认只创建了java文件夹

image-20230212161652220

自动创建了APP.java

image-20230212161639086
mvn archetype:generate -DgroupId=com.itheima -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinterativeMode=false

唯一不同的地方就是package这里要打war包

相比普通的java项目,这里面多了一个webapp的文件夹

image-20230226090324471 image-20230226090404139

7、idea版本创建maven工程

image-20230226090653134

配置maven

image-20230226094455012

手工创建maven项目

进入project structure

image-20230226090954307

进入选择new module

image-20230226091026624

选择maven

image-20230226091234737

填写相关信息:

image-20230226091437404

这里finish创建完成之后,这里文档结构还都是灰的(新版的不用自己标识),并不是一个正确的项目:

image-20230226091554764

会生成:

image-20230226091902619

新建一个resources:

image-20230226091958633

在pom.xml中引入junit依赖:

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

刷新maven

新建Demo:

package com.itheima;

public class Demo {
    public String say(String name){
        System.out.println("hello "+name);
        return "hello "+name;
    }
}

新建测试类:

public class DemoTest {
    @Test
    public void testSay(){
        Demo d = new Demo();
        String ret = d.say("itheima");
        Assert.assertEquals("hello itheima",ret);
    }
}

Assert.assertEquals([String message],T expected,T actual)
比较两个参数是否相等,message是可选的消息,假如加入了该参数,则发生错误时会报告该消息。如果 expected,actual,返回true。否则调用 expected.equals(actual)来判断。

maven命令执行

进行编译:

进行测试:

image-20230226093347120

image-20230226093702033

配置maven的运行环境:

image-20230226093919422

选择add new configuration->maven

image-20230226093956962 image-20230226094157769

8、idea使用骨架创建maven工程

8.1使用原型创建Java项目 quickstart

project structure->new module->勾选使用模板,输入quickstart

image-20230226094951497

输入相关信息:

image-20230226095106916

生成项目结构如图所示:

image-20230226095255771

8.2 使用原型创建web项目 webapp

这次选中webapp这个模板

image-20230226095352255 image-20230226095503987

生成目录结构如图所示:

image-20230226095559844

剩余目录自己补充:

image-20230226095701162

9、Tomcat插件

搜索tomcat找到这个包

https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin

<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
<dependency>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
</dependency>

要想添加插件需要在pom.xml中添加构件

image-20230226100659200

这里可以设置端口

image-20230226101546660 image-20230226101623481
<!-- 指定pom的模型版本-->
  <modelVersion>4.0.0</modelVersion>
<!--组织id-->
  <groupId>com.itheima</groupId>
<!--  项目id-->
  <artifactId>web01</artifactId>
<!--  版本号 snapshot是开发版 release 是完成版 -->
  <version>1.0-SNAPSHOT</version>
  <!--打包方式,web工程打包为war,java工程打包为jar-->
  <packaging>war</packaging>

10、依赖配置与依赖传递

10.1依赖管理

依赖指当前项目运行所需的jar,一个项目可以设置多个依赖

格式:

10.2依赖传递

将project03的groupid、artifactid、version粘贴到其他的pom里面,可以产生依赖传递

在project02中粘贴,可以看出来形成了对于project03的依赖传递

image-20230226141246111 image-20230226141421328 image-20230226142012119

特殊优先:同一个pom里面后面写的覆盖前面的

image-20230226141727079

10.3可选依赖

image-20230226142713536

如果想让其他的不知道你依赖的东西这里可以使用<optional>标签,这个标签的默认值是false

<dependency>
        <optional>true</optional>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
</dependency>

10.4排除依赖

image-20230226142728318
    <dependency>
        <groupId>org.example</groupId>
        <artifactId>project03</artifactId>
        <version>1.0-SNAPSHOT</version>
        <exclusions>
            <exclusion>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

这里不需要写version

11、依赖范围

<scope>默认值是compile

image-20230226145526802

当scope是test的时候,如果pom里面写的是:

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.3</version>
        <scope>test</scope>
    </dependency>

只有在test这里可以使用pom里面的jar包,主程序不可以

image-20230226145214407

12、生命周期与插件

生命周期可以看做是几岁,插件就是几岁干的那件事

image-20230226150026810 image-20230226150052419 image-20230226150104754 image-20230226150119504 image-20230226150605998

配置jar就是对源代码打包,配置test-jar就是对测试代码打包

image-20230226153538945

image-20230226153709608
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <phase>generate-test-resources</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>

会生成这样一个jar包:

image-20230226152759901

里面就是这个源码:

image-20230226152920176 image-20230226153033844

对test-jar打包:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>2.2.1</version>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
                <phase>generate-test-resources</phase>
            </execution>
        </executions>
    </plugin>
</plugins>

image-20230226153243990

也可以同时打两个jar包

image-20230226153430858

maven高级(P15~P29)

1、分模块开发与设计

标签:教程,jar,maven,pom,test,com,junit
From: https://www.cnblogs.com/MyBlogForRecord/p/17157407.html

相关文章

  • Turtlebot4入门教程-演示-创建节点(Python)
    说明:本教程将介绍创建ROS2包和用Python编写ROS2节点的步骤。​​有关C++示例,请单击此处​​。这些步骤与 ​​ROS2教程类似​​​,但侧重于与TurtleBot4的交互......
  • Turtlebot4入门教程-机械-有效载荷
    TurtleBot4能够承载超过9公斤的更重的有效载荷,但是必须进行一些机械和软件更改才能实现理想操作。如果不使用这些更改,系统可能会变得不稳定且难以控制。相关设备:Turtlebo......
  • Turtlebot4入门教程-演示-创建节点(C++)
     说明:本教程将介绍创建ROS2包和用C++编写ROS2节点的步骤。有关Python示例,请单击此处。这些步骤与 ​​ROS2教程类似​​​,但侧重于与TurtleBot4的交互。​​......
  • Turtlebot4入门教程-演示-导航
    说明:本教程将介绍使用TurtleBot4和Nav2进行导航的各种方法。相关设备:Turtlebot4机器人套件:​​采购地址​​SLAMvsLocalization我们可以使用两种定位方法来确定机器......
  • Turtlebot4入门教程-演示-创建地图
    说明:在本教程中,我们将通过驾驶TurtleBot4并使用SLAM来绘制一个区域。首先确保您将要绘制的区域没有不需要的障碍物。理想情况下,您不希望人或动物在创建地图时在该区域......
  • Turtlebot4入门教程-目录
    说明:介绍Turtlebot4产品特征,软件,硬件,仿真等,以及如何实现建图导航相关设备:Turtlebot4机器人套件:​​采购地址​​Turtlebot4图片:Turtlebot4Lite图片:目录:​​Turtlebot4入门......
  • maven
                   ......
  • Maven
    非Maven项目的缺点Maven的仓库Maven的资源坐标通过坐标来找到仓库中你要找的jar包,GroupId、ArtifactId和Version这三个信息构成坐标通过坐标找到对应MySQL的jar包......
  • C#和Net框架的关系(C#图解教程第一章)
    IllustratedC# Chapter1 1.Net框架:In2002,Microsoftreleasedthefirstversionofthe.NETFramework,whichpromisedtoaddresstheoldproblemsandmee......
  • maven工程servlet实例之导入依赖的jar包 解决jar包冲突
      jar包官网:http://mvnrepository.com    解决jar包冲突<scope>范围标签      compile 编写test 测试provided 假如......