基于 IDEA 进行 Maven 工程构建

这篇具有很好参考价值的文章主要介绍了基于 IDEA 进行 Maven 工程构建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 一、构建概念和构建过程

        项目构建是指将源代码、依赖库和资源文件等转换成可执行或可部署的应用程序的过程,在这个过程中包括编译源代码、链接依赖库、打包和部署等多个步骤。

        项目构建是软件开发过程中至关重要的一部分,它能够大大提高软件开发效率,使得开发人员能够更加专注于应用程序的开发和维护,而不必关心应用程序的构建细节。

        同时,项目构建还能够将多个开发人员的代码汇合到一起,并能够自动化项目的构建和部署,大大降低了项目的出错风险和提高开发效率。常见的构建工具包括 MavenGradleAnt 等。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

二、命令方式构建项目

2.1 命令总结

        相关的命令总结如下:

命令 描述
mvn compile 编译项目,生成 target 文件
mvn package 打包项目,生成 jar 或 war 文件
mvn clean 清理编译或打包后的项目结构
mvn install 打包后上传到 maven 本地仓库
mvn deploy 只打包,上传到 maven 私服仓库
mvn site 生成站点
mvn test 执行测试源码

        如果 war 包打包插件和 jdk 版本不匹配,可以在 pom.xml 添加以下代码:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.2.2</version>
        </plugin>
    </plugins>
</build>

2.2 mvn compile

        mvn compile 命令的作用是编译项目(只编译核心程序,不编译测试程序),生成 target 文件,并将 .java 文件编译成 .class 文件,我们演示下,首先我们引入依赖,并创建相关类,如下:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

<dependency>
	<groupId>org.junit.jupiter</groupId>
	<artifactId>junit-jupiter-api</artifactId>
	<version>5.9.2</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.20</version>
	<scope>provided</scope>
</dependency>
package com.maven;

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

@Data
@Setter
@Getter
public class User {
    private String name;
    private int age;
}
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

public class MavenTest {
    
    @Test
    public void testAssert(){
        int a = 10;
        int b = 20;
        // 如果期望结果为 30,则无输出,否则直接报错
        Assertions.assertEquals(a+b,40);
    }
}

         首先进入该工程的目录,然后在该目录下打开命令行,如下图:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        并在命令行执行 mvn -compile,如下图,可以看到,编译成功了,并将 .java 文件编译成了 .class 文件

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.3 mvn clean

        mvn clean 命令的作用是清理编译或打包后的项目结构,我们演示下,还是在原来的目录结构下执行这个命令,看看是否可以清除掉

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        可以看到,target 目录没有了 

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.4 mvn test-compile

        mvn test-compile 命令的作用是编译测试程序(不编译核心程序,只编译测试程序),生成 target 文件,并将 .java 文件编译成 .class 文件。

        我们接下来演示下,首先我们可以发现,虽然我们执行了 compile 命令,但是好像并没有对我们的测试代码进行编译,如下图:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        此时我们再执行 mvn test-compile 命令,如下,可以看到,对我们的测试程序进行了编译。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.4 mvn test

2.4.1 案例

        mvn test 命令的作用是会自动执行测试方法。我们接下来演示下,如下图,运行成功了,正确的结果应该是 30,但是我们断言的结果为 40,所以才会报错。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        将结果改为 30 之后,再次执行命令,可以发现,不报错了。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.4.2 注意

        1、调用 mvn test 命令时会自动调用 mvn compile mvn test-compile 命令。

        2、test 目录里面的测试代码是有讲究的,比如说要测试的类必须以 Test 开头或者以 Test 结尾,如果不是这样的格式, mvn test 命令是无法识别的,比如下面的这个测试类。

public class MavenDemo {

    @Test
    public void testAssert(){
        int a = 10;
        int b = 20;
        // 如果期望结果为 30,则无输出,否则直接报错
        Assertions.assertEquals(a+b,30);
    }
}

        都没有找到测试类,如下 

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        3、测试类里面的方法名也是有讲究的,以 test 开头的方法都可以识别(和方法上有没有 @Test 注解没有关系),如果是随便起的或者 test 在方法后面的都无法识别,如下

public class MavenTest {

    @Test
    public void aaa(){
        int a = 10;
        int b = 20;
        // 如果期望结果为 30,则无输出,否则直接报错
        Assertions.assertEquals(a+b,30);
    }
}

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        方法后面加 test ,如下:

public class MavenTest {

    @Test
    public void assertTest(){
        int a = 10;
        int b = 20;
        // 如果期望结果为 30,则无输出,否则直接报错
        Assertions.assertEquals(a+b,30);
    }
}

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.5 报告

        maven 项目构建有一个阶段是报告,这个报告就是记录我们测试的结果,我们并不用使用具体的指令来实现报告的过程,执行测试之后会自动执行测试的结果,可以执行下面的命令先清理再进行测试

mvn clean test

        执行结束后会在 target 目录下生成一个 surefire-reports 文件夹,它里面存储的就是测试的结果

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        这个就是具体的报告 

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.6 打包

        打包的意思就是把我们的工程构建成 jar 或者 war,它所对应的命令为 mvn package

        需要注意的是,在进行打包操作时,它首先会将核心代码和测试代码编译,还会执行我们的测试代码。换句话说就是一次打包会进行多次操作。

2.6.1 构建 jar 包

        生成一个新的 jar 包,如下。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        在最终构建成的 jar 或者 war 包里面,都是没有测试程序的。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.6.2 构建 war 包

        切换到 web 模块下,构建成 war 包,如下所示:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.7 安装

        安装的意思就是把我们上面构建成的 jar 包或者 war 包安装到本地仓库里面。在介绍这个之间,先来看下下面的场景。

        现在的项目结构如下所示,maven_java 是一个模块,maven_web 是一个模块,如下:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        如果我想在 maven_web 模块里面使用 maven_java 里面的相关 api,只需要在 maven_web pom.xml 里面引入 maven_java 的依赖即可,如下:

<?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.maven</groupId>
    <artifactId>maven_web</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!-- 引入 maven_java 依赖-->
        <dependency>
            <groupId>com.maven</groupId>
            <artifactId>maven_java</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>

        接下来对 maven_web 模块进行打包操作,如下:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        可以发现报错了,是因为在打包的过程中没有发现 maven_java 这个依赖,在打包的过程中需要先去本地仓库寻找 jar 包,如果没有找到则去中央仓库寻找。这两个地方都没有,因为这是我们自己的模块,怎么可能有。

        这个时候就需要用到我们的 mvn install 命令了。它会将我们的 jar 包或者 war 包安装到本地仓库。

        进入到 maven_java 模块的目录下,执行 mvn install 命令,就可以将我们的工程打成 jar 包并放到本地仓库里面,如下:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        在本地仓库里面可以看见我们安装的 jar 包,如下: 

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        此时,我们再次编译 maven_web 项目,就成功了,如下:

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

2.8 打包和安装区别

        1、打包是将工程打成 jar war 文件,保存在 target 目录下

        2、安装是将当前工程所生成的 jar war 文件,安装到本地仓库,会按照坐标保存到指定位置

三、可视化方式构建项目

        打开 idea ,点击右侧的 Maven ,如下,Lifecycle 的意思是生命周期,Plugins 是插件,Dependencies 是项目的依赖。

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

3.1 Lifecycle

        生命周期里面的命令有些和我们的命令一样,有些不一样,比如 validate verify 是对我们的 maven 工程进行验证用的,其他的命令基本都一样。

3.2 Plugins

        插件里面的命令和生命周期里面的命令基本一样,这些都是我们的 maven 工程中默认的插件,是用来支持生命周期的插件,点击插件里面的 clean 命令和点击生命周期里面的 clean 命令效果一样。

四、构建插件、命令和生命周期之间的关系

4.1 构建生命周期

        我们发现一个情况,当我们执行 package 命令也会自动执行 compile 命令,如下图

基于 IDEA 进行 Maven 工程构建,maven 专栏,maven

        这种行为就是因为构建生命周期产生的!构建生命周期可以理解成是一组固定构建命令的有序集合,触发周期后的命令,会自动触发周期前的命令。

4.2 构建周期作用

        构建周期会简化构建过程。比如说项目打包,只需要执行 mvn clean package 即可。主要包含两个构建生命周期。

        1、清理周期:主要是对项目编译生成文件进行清理,如 clean

        2、默认周期:定义了真正构件时所需要执行的所有步骤,它是生命周期中最核心的部分,如 compile -  test - package - install - deploy 等。

4.3 插件、命令、周期三者关系

        1、周期 → 包含若干命令 → 包含若干插件

        2、使用周期命令构建,简化构建过程,最终进行构建的是插件。文章来源地址https://www.toymoban.com/news/detail-804604.html

到了这里,关于基于 IDEA 进行 Maven 工程构建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于IDEA 进行Maven依赖管理

    Maven 依赖管理是 Maven 软件中最重要的功能之一。Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。 我们通过定义 POM 文件,

    2024年01月23日
    浏览(51)
  • 基于 IDEA 进行 Maven 依赖管理

             Maven 依赖管理是 Maven 软件中最重要的功能之一。 Maven 的依赖管理能够帮助开发人员自动解决软件包依赖问题,使得开发人员能够轻松地将其他开发人员开发的模块或第三方框架集成到自己的应用程序或模块中,避免出现版本冲突和依赖缺失等问题。        

    2024年01月19日
    浏览(52)
  • 基于 IDEA 创建 Maven 的 Java SE 工程和 Java Web 工程

             Maven 工程相对之前的项目,多出一组 gavp 属性, gav 需要我们在创建项目的时候指定, p 有默认值,我们先行了解下这组属性的含义。          Maven 中的 GAVP 是指 GroupId 、 ArtifactId 、 Version 、 Packaging 等四个属性的缩写,其中前三个是必要的,而 Packaging 属性

    2024年01月17日
    浏览(50)
  • 使用Maven父工程构建spring boot子工程

    注意:子工程引入springboot相关依赖之后子工程才能被解析为springboot模块

    2024年02月11日
    浏览(45)
  • idea maven聚合工程pom依赖

    spring boot 与 spring cloud 与 spring.cloud.alibaba 版本选择

    2024年02月16日
    浏览(51)
  • IDEA中导入Maven工程或项目

    本文简单讲述了IDEA中导入Maven工程或项目。为了减轻读者压力笔者将 IDEA 相关应用技巧分解成了多篇文章置于主页 IDEA 专栏,若本文没有帮助到您,请去主页 IDEA 专栏检索吧 😏。 ⓵ 新建一个空的项目project作为工作空间 ⓶ 在项目结构中导入工程(Model) ⓷ 选择要导入的工

    2024年02月16日
    浏览(55)
  • IDEA创建完Maven工程后,右下角一直显示正在下载Maven插件

    这是由于新建的Maven工程,IDEA会用它内置的默认的Maven版本,使用国外的网站下载Maven所需的插件,速度很慢 。 每次创建 Project 后都需要设置 Maven 家目录位置(就是我们自己下载的Maven),否则 IDEA 将使用内置的 Maven(不稳定)并使用默认的本地仓库位置。这样一来,我们在

    2024年02月08日
    浏览(66)
  • IDEA 将一个普通Java工程转化为maven工程

    打开IntelliJ IDEA并打开Java工程。 在项目窗口中,右键单击项目名称,选择“Add Framework Support”。 在弹出的窗口中,选择“Maven”。 在“Maven Information”窗口中,填写Group Id、Artifact Id和Version等基本信息。 点击“Finish”按钮,IntelliJ IDEA会自动创建一个pom.xml文件并将Java工程转化

    2024年02月04日
    浏览(47)
  • SpringBoot工程Maven构建引用本地jar包依赖

    目前大部分项目使用了SpringBoot,在项目实施过程中可能遇到没有搭建私有仓库,并且需要引入第三方提供的jar包(例如某些SDK)的情况。一般遇到以上情况可以将第三方提供的jar包通过以下命令安装到本地仓库,然后本地进行构建打包。 但是实际场景经常需要通过自动部署

    2024年01月24日
    浏览(50)
  • IntelliJ IDEA编译Maven工程:一步步详解

    Apache Maven是一个流行的自动化构建工具,被广泛应用于Java项目的构建管理中。IntelliJ IDEA作为一个功能强大的集成开发环境(IDE),它提供了对Maven工程的天然支持,并能简化构建过程。本文将详细介绍如何在IntelliJ IDEA中编译Maven工程。 首先确保你有一个已安装的IntelliJ IDEA环

    2024年01月17日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包