• Maven1-HelloWorld简单入门


    编写POM(Project Object Model)

    Maven项目的核心是pom.xml,它定义了项目的基本信息,用于描述项目如何构建,声明项目依赖

    1. 创建文件夹,名称为hello-world
    2. 创建pom.xml文件,位于根目录下
    3. 编辑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/maven-v4_0_0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <groupId>com.xikunqu.firstmvn</groupId>
       <artifactId>helloworld</artifactId>
       <version>1.0-SNAPSHOT</version>
       <name>Maven Hello World Project</name>
      </project>
      
      解析:
      • <??>中制定了xml文档的版本和编码方式
      • 是文档的根元素,还声明了一些POM相关的命名空间以及xsd元素,使用这些属性可以让第三方工具帮助我们快速编辑POM
      • groupId,artifactId和version定义了一个项目的基本坐标,在Maven中,任何jar,pom,war都是局域这些基本 坐标进行区分的
      • grouId定义了项目属于哪个组,若googlecode上建立了一个myapp项目,groupld就应该是com.googlecode.myapp
      • artifactId定义了当前Maven项目在组中唯一的ID
      • version 制定了hello-world项目当前的版本
      • name生命了一个对于用户更为友好的名称,不是必须的

    编写主代码

    项目主代码会被导播到最终的构建中,默认情况下,Maven假设项目主代码位于src/main/java目录下

    1. 创建src/main/java目录
    2. 在建好的目录下创建文件com/xikunqu/firstmvn/helloworld/HelloWorld.java

      package.com.xikunqu.firstmvn.helloworld;
      public class HelloWorld
      {
       public String sayHello(){
           return "Hello World";
       }
       public stacic void main(String[] args){
           System.out.print( new HelloWorld().sayHello());
       } 
      }
      
    3. 执行编译:mvn clean compile
      运行结果如下:
      运行结果

    编写测试代码

    1. 建立目录,src/test/java
    2. 由于要使用JUnit,所以先为项目添加一个JUnit依赖,修改pom.xml,添加如下代码
      <dependencies>
        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>4.7</version>
             <scope>test</scope>
        </dependency>
      </dependencies>
      
      解析:
      • dependencies元素下可以包含多个dependency元素以声明项目的依赖
      • 这段声明可以使Maven 自动下载junit-4.7.jar
      • scope为依赖范围,表明该依赖值对测试有效
    3. 编写测试类,测试sayHello()方法,检查其返回值,在src/test/java下创建文件HelloWorldTest.java
      package com.xikunqu.firstmvn.helloworld;
      import static org.junit.Assert.assertEquals;
      import org.junit.Test;
      public class HelloWorldTest
      {
        @Test
        public void testSayHello(){
            HelloWorld helloworld=new HelloWorld();
            String result=helloworld.sayHello();
            assertEquals("Hello World",result);
        }
      }
      
    4. 执行编译:mvn clean test
      运行结果部分截图如下:
      运行结果

    打包和运行

    在项目进行编译,测试之后,下一重要步骤就是打包

    1. 执行命令:mvn clean package
      运行结果部分截图如下:
      运行结果
      可以看到项目主代码被打包为一个名为helloworld-1.0-SNAPSHOT.jar的文件,位于target目录下。
    2. 目前为止,我们都没有运行HelloWorld项目,默认打包生成的jar是不能后直接运行的,因为带有main方法的类不会被添加到manifest中,为了生成可执行的jar文件,需要借助maven-shade-plugin,在pom.xml添加如下代码:

      <build>
           <plugins>
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-shade-plugin</artifactId>
                   <version>1.2.1</version>
                   <executions>
                       <execution>
                           <phase>package</phase>
                           <goals>
                               <goal>shade</goal>
                           </goals>
                           <configuration>
                               <transformers>
                                   <transformer implementation="org.apache.maven.plugins.shade.resource.
                                                ManifestResourceTransformer">
                                       <mainClass>com.xikunqu.firstmvn.helloworld.HelloWorld</mainClass>
                                   </transformer>
                               </transformers>
                           </configuration>
                       </execution>
                   </executions>
               </plugin>
           </plugins>
       </build>
      
    3. 再次执行mvn clean package,构建成功后,可以看见target目录下存在两个jar包,如下图所示:
      jar包

    4. 执行jar文件,如下图所示:
      运行结果
  • 相关阅读:
    聊聊mysql中的int(1)
    如何有效防止sql注入
    微信小程序WXML页面常用语法(讲解+示例)
    Spring Boot 2.x基础教程:使用集中式缓存Redis
    基于.NetCore3.1系列 —— 日志记录之自定义日志组件
    精讲RestTemplate第10篇-使用代理作为跳板发送请求
    使用Java API进行tar.gz文件及文件夹压缩解压缩
    精讲RestTemplate第9篇-如何通过HTTP Basic Auth认证
    精讲RestTemplate第8篇-请求失败自动重试机制
    精讲RestTemplate第7篇-自定义请求失败异常处理
  • 原文地址:https://www.cnblogs.com/quxikun/p/8392740.html
Copyright © 2020-2023  润新知