• maven学习:maven 的入门


    2.maven 的入门

    到目前为止,我们已经大概了解并安装好了Maven,现在,我们开始创建一个最简单的Hello World项目。

    2.1 在Idea创建maven项目

    1. 创建一个Maven项目也十分简单,选择”Create New Project"
      在这里插入图片描述

    2. 选择”maven”选项,创建一个maven项目
      在这里插入图片描述

    3. 输入项目的groupId,ArtifactId,Version
      在这里插入图片描述

    4. 直接”finish”
      在这里插入图片描述
      此时我们就创建好了一个maven项目,我们看一下maven项目的结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KIMueZir-1669270636250)(assets/wps22.jpg)]

    ​ 我们看到src/main/java是放我们的主源代码,src/test/java 是放我们的测试源代码. target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。target里的所有内容都是maven构建的时候生成的,pom.xml文件就是我们项目的maven的核心文件, 它是指示 Maven 如何工作的元数据文件,每一个Maven项目在根目录下有一个pom.xml文件.

    2.2 pom.xml 文件

    下面就是我们在创建maven项目时,所生成的pom.xml文件

    <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.0modelVersion>
    
      <groupId>org.csmf.helloworldgroupId>
      <artifactId>hello-worldartifactId>
      <version>0.0.1-SNAPSHOTversion>
      <packaging>jarpackaging>
    
      <name>hello-worldname>
      <url>http://maven.apache.orgurl>
    
      <properties>
      <project.build.sourceEncoding>UTF-8project.build.sourceEncoding> <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
      properties>
    
      <dependencies>
        <dependency>
          <groupId>junitgroupId>
          <artifactId>junitartifactId>
          <version>3.8.1version>
          <scope>testscope>
        dependency>
      dependencies>
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 代码的第一行是XML头,指定了该xml文档的版本和编码方式。紧接着是project元素,project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素.

    • 根元素下的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2及Maven 3来说,它只能是4.0.0。

    • groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,譬如你在googlecode上建立了一个名为myapp的项目,那么groupId就应该是com.googlecode.myapp,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp。

    • artifactId定义了当前Maven项目在组中唯一的ID,我们为这个Hello World项目定义artifactId为hello-world

    • version指定了Hello World项目当前的版本——1.0-SNAPSHOT。SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。随着项目的发展,version会不断更新,如升级为1.0、1.1-SNAPSHOT、1.1、2.0等等。

    • name元素声明了一个对于用户更为友好的项目名称,虽然这不是必须的,但我还是推荐为每个POM声明name,Maven产生的文档用。

    • url元素:项目主页的URL, Maven产生的文档用

    • properties元素是对项目的一些设置

    • project.build.sourceEncoding 设置项目源文件的编码

    • maven.compiler.source 设置编译源代码的jdk版本

    • maven.compiler.target: 设置生成jar/war使用的jdk版本

    • dependencies项目引入插件所需要的额外依赖

    • ​ dependency: 为了能够 build 或运行,一个典型的java project会依赖其他的包,在Maven中,这些被依赖的包就被称为 dependency。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hXeObkDH-1669270636252)(assets/wps23.png)]

    <build>
      	
      	<plugins>
      		<plugin>
      			<groupId>org.apache.maven.pluginsgroupId> 
      			<artifactId>maven-compiler-pluginartifactId>
      			<configuration>
      				 <source>1.8source>  
      				 <target>1.8target>  
                    <encoding>UTF-8encoding>
      			configuration>
      		plugin>
      	plugins>
      build>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2.3 编写主代码

    ​ 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(比如jar),而测试代码只在运行测试时用到,不会被打包。默认情况下,Maven假设项目主代码位于src/main/java目录,我们遵循Maven的约定,创建该目录,然后在该目录下创建java源文件.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cQsRxl9i-1669270636254)(assets/wps24.jpg)]

    源文件的代码如下:

    public class HelloWorld {
    	public void sayHello(String world){
    		System.out.println("hello: "+world);
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    	这是一个简单的Java类,它有一个sayHello()方法,在控制台输出”hello:XXx””. 代码编写完毕后,我们删除编译输出文件,使用命令`clean`,我们使用Maven进行编译,使用命令`compile `,
    
    • 1

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E0oEAWUg-1669270636254)(assets/wps25.jpg)]

    我们会得到如下输出:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jndBdcaG-1669270636255)(assets/wps26.jpg)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qQGEpwBz-1669270636256)(assets/wps27.jpg)]

    **注意:输出的信息中没有[error]**就说明编程通过.

    2.4 编写测试代码

    Maven项目中默认的测试代码目录是src/test/java下的,当我们java的测试都是基于junit的单元测试,那也就是说,我们需要添加junit的依赖,我们在pom,xml文件添加了junit依赖,

    <dependency>
        <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
        <scope>testscope>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    当我们添加了这个依赖的时候,我们发现在我们项目的”Maven Dependencies”下面就添加了junit的jar包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJwNms8b-1669270636257)(assets/wps28.jpg)]”

    那我们来编写一个测试类,来测试我们之前写的HelloWorld,测试类的代码如下:

    import org.junit.Test;
    
    public class TestHelloWorld {
    	@Test
    	public void testSayHello(){
    		HelloWorld helloWorld = new HelloWorld();
    		helloWorld.sayHello("Maven");
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    测试用例编写完毕之后就可以调用Maven执行测试,运行 test

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xWeAGerx-1669270636259)(assets/wps29.jpg)]

    测试报告如下:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GpZxzpE9-1669270636259)(assets/wps30.jpg)]
    当看到”BUILD SUCCESS”这说明测试通过.

    2.5 项目打包

    将项目进行编译、测试之后,下一个重要步骤就是打包(package)。Hello World的POM中没有指定打包类型,使用默认打包类型jar,我们可以简单地执行命令clean package进行打包,可以看到如下输出:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jUe2yCRw-1669270636260)(assets/wps31.jpg)]

    类似地,Maven会在打包之前执行编译、测试等操作。这里我们看到jar:jar任务负责打包,实际上就是jar插件的jar目标将项目主代码打包成一个名为hello-1-1.0-SNAPSHOT.jar的文件,该文件也位于**target/**输出目录中,它是根据artifact-version.jar规则进行命名的.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B47l0B2s-1669270636261)(assets/wps32.jpg)]

    我们得到了项目的输出,如果有需要的话,就可以复制这个jar文件到其他项目的Classpath中从而使用HelloWorld类。但是,如何才能让其他的Maven项目直接引用这个jar呢?我们还需要一个安装的步骤,执行 install

    在这里插入图片描述
    我们发现,现在这个项目已经安装到我们的本地仓库中了.

    Maven常用命令:

    mvn archetype:generate :创建 Maven 项目

    mvn compile :编译源代码

    mvn test-compile :编译测试代码

    mvn test : 运行应用程序中的单元测试

    mvn site : 生成项目相关信息的网站

    mvn clean :清除目标目录中的生成结果

    mvn package : 依据项目生成 jar 文件

    mvn install :在本地 Repository 中安装 jar

    mvn deploy:将jar包发布到远程仓库

    mvn eclipse:eclipse :生成 Eclipse 项目文件

  • 相关阅读:
    序列化、反序列化
    PMP每日一练 | 考试不迷路-11.10(包含敏捷+多选)
    KAIS 2012 | 在线社交网络中的信息传播:连接强度视角
    Python configparser模块详解:配置文件解析利器
    【UI设计】Figma_“全面”快捷键
    Python3 集合
    Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
    第二次面试 9.15
    Python学习基础笔记十八——三元运算
    使用舵机和超声波模块实现小车自动避障
  • 原文地址:https://blog.csdn.net/H215919719/article/details/128017709