手把手教你使用IDEA创建多模块(maven)项目

 更新时间:2023年07月05日 09:52:39   作者:哦...  
这篇文章主要给大家介绍了关于如何使用IDEA创建多模块(maven)项目的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下

前言

有了前面两篇手摸手打底,相信大家对IDEA创建项目和配置使用maven已经没有什么问题了。那么这篇文章阅读起来也会非常流畅。

对于IDEA来说,可以用拼接模块(Module)并引用的方式来“搭”一个项目(Project)。

1. 创建一个空的项目(empty project)

空项目的项目结构:

2. 你会注意到新建空项目只需要起一个名字,设置连Java SDK都不用选

这显然是不太可能的。所以啊,新建完空项目后,马上进入project sturcture...进行项目的相关设置。

可以看到目前SDK根本没有设定。

这里请一定进行配套的设置。SDK选择1.8,Language Level 选择8。

3. 接下来添加模块

添加的第一个模快,创建的方式用maven。模块的名字叫dao_mod,选择的模板是quickstart,不用忘了最下方设置包名,不然会使用默认的org.example

4.接下来继续添加service_mod模块

方式和dao_mod 一模一样

5.最后添加web_mod模块

与前两个不一样的是,它的模板是webapp

6.添加完毕后看一下项目结构

 一个空项目下面有3个模块(module)。

7. 在dao_mod中添加MyDao

项目结构:

package org.piglite;
public class MyDao {
    public String getUsernameById(int id){return "piglite";}
}

 代码是玩具代码。

8.在service_dao中添加MyService

项目结构MyDao类似,代码也是玩具代码:

package org.piglite;
public class MyService {
    private MyDao mydao = new MyDao();
    public String getUsernameById(int id){return mydao.getUsernameById(id);}
}

这里需要注意的是MyService内部引用了MyDao,但是模块与模块之间不像包与包之间导入就可以,而是要建立模块与模块之间的依赖(Dependency),也就是service_mod依赖于dao.mod。

9.在web_mod中要添加MyServlet

添加前要做两件事:1.这是一个webapp模板,所以要添加名为java的源代码目录;2.这是maven构建的模块,通过maven引入比用的jar文件,包括servlet,jstl和standard。

编辑pom.xml,添加需要导入jar文件的<dependency>。 

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
 

10.在web_mod的java源文件目录下新建MyServlet:

 
import org.piglite.MyService;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
@WebServlet(value = "/test")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        MyService service = new MyService();
        String name = service.getUsernameById(1);
        request.setAttribute("name",name);
        request.getRequestDispatcher("hello.jsp").forward(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}

11.编写hello.jsp

<%@page contentType="text/html; UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h2>Hello <c:out value="${name}"/> </h2>
</body>
</html>

JSP避免出现问题的前提条件是web_mod中有jstl.jar和standard.jar。

12.修改web.xml,将默认的动态网络模块从2.3改写为3.0

<?xml version="1.0" encoding="utf-8"?>
<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name>Archetype Created Web Application</display-name>
</web-app>

13.万事俱备,只欠Tomcat

添加TOMCAT的相关配置,配置细节与前面两篇一样,server和deployment都需要配置。

14.启动项目

默认进入http://localhost:8080,会显示index.jsp的相关内容。

修改url,进入http://localhost:8080/test,会显示hello piglite

写在最后

创建模块的时候,不使用maven构建,而创建普通的Java模块也是没有问题。模块其实就可以视为单独且功能完整的“小型程序”。普通Java模块编写时需要第三方的Jar就需要手动设置,maven在这方面相对方便一些。

到此这篇关于手把手教你使用IDEA创建多模块(maven)项目的文章就介绍到这了,更多相关IDEA创建多模块maven项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中堆和栈的区别详解

    Java中堆和栈的区别详解

    这篇文章主要介绍了Java中堆和栈的区别详解,所有的Java程序都运行在JVM虚拟机内部,我们这里介绍的自然是JVM(虚拟)内存中的堆和栈,需要的朋友可以参考下
    2015-01-01
  • SpringBoot系列教程之防重放与操作幂等

    SpringBoot系列教程之防重放与操作幂等

    同一条数据被用户点击了多次,导致数据冗余,需要防止弱网络等环境下的重复点击,下面这篇文章主要给大家介绍了关于SpringBoot系列教程之防重放与操作幂等的相关资料,需要的朋友可以参考下
    2022-04-04
  • Java Hibernate中一对多和多对多关系的映射方式

    Java Hibernate中一对多和多对多关系的映射方式

    Hibernate是一种Java对象关系映射框架,支持一对多和多对多关系的映射。一对多关系可以使用集合属性和单向/双向关联来映射,多对多关系可以使用集合属性和中间表来映射。在映射过程中,需要注意级联操作、延迟加载、中间表的处理等问题
    2023-04-04
  • Java并发CopyOnWrite容器原理解析

    Java并发CopyOnWrite容器原理解析

    这篇文章主要介绍了Java并发CopyOnWrite容器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • RestTemplate对HttpClient的适配源码解读

    RestTemplate对HttpClient的适配源码解读

    这篇文章主要为大家介绍了RestTemplate对HttpClient的适配源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Java Switch对各类型支持实现原理

    Java Switch对各类型支持实现原理

    这篇文章主要介绍了Java Switch对各类型支持实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • SpringBoot是如何使用SQL数据库的?

    SpringBoot是如何使用SQL数据库的?

    今天给大家带来的是关于Springboot的相关知识,文章围绕着SpringBoot是如何使用SQL数据库的展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java高级之虚拟机加载机制的实例讲解

    Java高级之虚拟机加载机制的实例讲解

    下面小编就为大家分享一篇Java高级之虚拟机加载机制的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • SpringBoot使用@EnableAutoConfiguration实现自动配置详解

    SpringBoot使用@EnableAutoConfiguration实现自动配置详解

    你有想过SpringBoot为什么能够自动的帮我们创建一个Bean对象么?或许在我们使用的时候只需要在自己自定义的配置文件中加入@Bean对象就可以,但SpringBoot是如何来创建的呢
    2022-08-08
  • Java并发(Runnable+Thread)实现硬盘文件搜索功能

    Java并发(Runnable+Thread)实现硬盘文件搜索功能

    这篇文章主要介绍了Java并发(Runnable+Thread)实现硬盘文件搜索,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论