栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

IDEA2021.2.1集成Maven学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

IDEA2021.2.1集成Maven学习笔记

Maven简介

个人理解为一种能够对编译,运行单元测试,生成文档,打包和部署等操作形成完全自动化,对于工程所依赖的jar,war包能够通过配置文件通过网络下载。因此也相当于一个远程三方共享库。

Maven的安装配置和目录结构

IDEA中自带Maven,也可以去官网下载安装包直接解压。这里使用不用自带的使用自己下载的3.8 版本的Maven

Maven目录结构
目录目的
${basedir}存放pom.xml和所有的子目录
${basedir}/src/main/java项目的java源代码
${basedir}/src/main/resource项目的资源,比如说property文件
${basedir}/src/test/java项目的测试类,比如说Junit代码
${basedir}/src/test/resources测试使用的资源
Maven命令 常用命令
命令描述
mvn –version显示版本信息
mvn clean清理项⽬⽣产的临时⽂件,⼀般是模块下的target⽬录
mvn compile编译源代码,⼀般编译模块下的src/main/java⽬录
mvn package项⽬打包⼯具,会在模块下的target⽬录⽣成jar或war等⽂件
mvn test测试命令,或执⾏src/test/java/下junit的测试⽤例.
mvn install将打包的jar/war⽂件复制到你的本地仓库中,供其他模块使⽤
mvn deploy将打包的⽂件发布到远程参考,提供其他⼈员进⾏下载依赖
mvn site⽣成项⽬相关信息的⽹站
mvn eclipse:eclipse将项⽬转化为Eclipse项⽬
mvn dependency:tree打印出项⽬的整个依赖树
mvn archetype:generate创建Maven的普通java项⽬
mvn tomcat7:run在tomcat容器中运⾏web应⽤
mvn jetty:run调⽤ Jetty 插件的 Run ⽬标在 Jetty Servlet 容器中启动 web 应⽤
命令参数
  1. -D 传⼊属性参数
mvn package -Dmaven.test.skip=true
以 -D 开头,将 maven.test.skip 的值设为 true ,就是告诉maven打包的时候跳过单元测试。同
理, mvn deploy-Dmaven.test.skip=true 代表部署项⽬并跳过单元测试。
  1. -P 使⽤指定的Profile配置。演示见打包部分
通过maven可以实现按不同环境进⾏打包部署,例如:
mvn package -Pdev -Dmaven.test.skip=true
表示打包本地环境,并跳过单元测试
IEDA上Maven工程的创建 IDEA全局Maven配置

File-> New Projects Setup -> Set for New Projects -> Build,Execution,Deployment->Build Tools->Maven

选择自己的Maven路径,以及settings.xml路径

配置文件setting.xml修改
  • 修改默认仓库路径和镜像源
    默认仓库是存放下载的第三方jar包的,镜像源是下载三方jar包的地址,国情因素改为阿里镜像源。
1.1.修改默认仓库位置
打开maven⽬录 -> conf -> settings.xml
添加仓库位置配置
D:/Maven/.m2/repository
注:仓库位置改为⾃⼰本机的指定⽬录,"/"不要写反
1.2.更换阿⾥镜像,加快依赖下载

	nexus-aliyun
	central
	Nexus aliyun
	http://maven.aliyun.com/nexus/content/groups/public

使用Maven创建项目

如果IDEA 2021版本出现maven项目archetype只有两个模板,需要安装插件Maven Archetypes插件

  • 选择 “File” —> “New” —> “Project”。选择"Maven",设置JDK版本,选择maven项⽬的模板
  • 设置项⽬的 GroupId 和 ArtifactId和项目名
  • Finish即可

    第一次创建工程会自动到镜像源下载一些jar包,安心等待即可,创建完是这样子的
pom.xml文件修改

需要修改的是你jdk版本与junit版本,并删除无用的plugins配置

编译项目

只需要在3处填入maven 编译命令compile

  • 编译成功
Maven创建Web工程

创建方式和普通工程一样,模板选择maven-archetype-webapp

部署web插件

注意对应的jdk版本不同,所需要的web插件的版本也不一样。
我这里用的jdk11
在 build 标签中plugins 标签添加plugin

jetty插件
        
          org.eclipse.jetty
          jetty-maven-plugin
          11.0.6
          
            
              /test
            
            
            10
            
            




            
          
        
  • 部署运行jetty命令指定9090端口

tomcat
 
   org.apache.tomcat.maven
   tomcat7-maven-plugin
   2.1
   
     8081 
     /test 
     UTF-8 
     tomcat7 
   
 


Maven环境下构建多模块项目

使⽤maven 提供的多模块构建的特性完成maven 环境下多个模块的项⽬的管理与构建这⾥以四个模块为例来搭建项⽬,以达到通俗易懂的初衷

  1. 模块 maven_parent —– 基模块,就是常说的parent (pom)
  2. 模块 maven_dao —– 数据库的访问层,例如jdbc操作(jar)
  3. 模块 maven_service —– 项⽬的业务逻辑层 (jar)
  4. 模块 maven_controller —– ⽤来接收请求,响应数据 (war)
创建parent目录

选择 File —> Settings —> Project
不选择模板直接next

创建maven_dao模块
  • 选择项⽬maven_parent,右键选择 New ,选择Module
  • 选择Maven项⽬的模板(普通 Java 项⽬)

创建 maven_service 模块

与maven_dao一致

建 maven_controller 模块

与maven_dao和maven_service一致,只需要选择web模板即可

整个目录结构


之后需要需改每个模块的pom.xml文件

设置模块之间依赖 dao
  • 在dao模块中创建一个类中静态方法
package org.lujw.example;


public class UserDao {
    public static void testDao() {
        System.out.println("UserDao Test...");
    }
}
service
  • 添加maven_dao的依赖
    
    
      org.lujw.example
      maven_dao
      1.0-SNAPSHOT
    
  • service模块也创建一个类中的静态方法并调用dao
public class UserService {
    public static void testService() {
        System.out.println("UserService Test...");
// 调⽤UserDao的⽅法
        UserDao.testDao();
    }
}

需要在service中设置

controller
  • 添加 maven_service 模块的依赖
    
      org.lujw.example
      maven_service
      1.0-SNAPSHOT
    
  • 涉及到servlet-api,需要对其进行添加依赖

	javax.servlet
	javax.servlet-api
	3.0.1
	provided

  • 创建一个类继承HttpServlet 类,并重写 service⽅法
package org.lujw.example;
import org.lujw.example.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/user")
public class UserServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse
            resp) throws ServletException, IOException {
        System.out.println("UserServlet Test...");
// 调⽤UserService层的⽅法
        UserService.testService();
    }
}
运行
  • 如之前的那个web工程一样运行tmcat
  • 此时可能因为找不到对应依赖,需要将整个工程全部用install 进行安装,先父类工程,然后安装子模块
  • 通过网页访问,终端中有信息打印。

Maven打包操作

对于一个jar包,可能需要根据所使用的环境来进行打包,这个可以根据pom.xml来进行打包。还是以一个webapp举例

  • 建立如下一个目录结构的项目
    resource目录下面存放三个文件夹,分别代表本地,生成,测试的配置文件。可以通过pom.xml配置选择性的打包
  
  
    
      dev
      
        dev
      
      
      
        true
      
    
    
      test
      
        test
      
    
    
      product
      
        product
      
    
  
  • 设置资源⽂件配置
      
        src/main/java
        
          ***.properties
          **/*.tld
        
        false
      
    
  • 打包命令
  • 在target下生成的war包中包含对应的配置文件
  1. 打包默认环境(开发环境)并且跳过maven 测试操作
    clean compile package -Dmaven.test.skip=true
  2. 打包测试环境并且跳过maven 测试操作
    clean compile package -Ptest -Dmaven.test.skip=true
  3. 打包⽣产环境并且跳过maven 测试操作
    clean compile package -Pproduct -Dmaven.test.skip=true
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/425252.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号