手把手教你使用IDEA創(chuàng)建多模塊(maven)項(xiàng)目
前言
有了前面兩篇手摸手打底,相信大家對(duì)IDEA創(chuàng)建項(xiàng)目和配置使用maven已經(jīng)沒(méi)有什么問(wèn)題了。那么這篇文章閱讀起來(lái)也會(huì)非常流暢。
對(duì)于IDEA來(lái)說(shuō),可以用拼接模塊(Module)并引用的方式來(lái)“搭”一個(gè)項(xiàng)目(Project)。
1. 創(chuàng)建一個(gè)空的項(xiàng)目(empty project)

空項(xiàng)目的項(xiàng)目結(jié)構(gòu):

2. 你會(huì)注意到新建空項(xiàng)目只需要起一個(gè)名字,設(shè)置連Java SDK都不用選
這顯然是不太可能的。所以啊,新建完空項(xiàng)目后,馬上進(jìn)入project sturcture...進(jìn)行項(xiàng)目的相關(guān)設(shè)置。

可以看到目前SDK根本沒(méi)有設(shè)定。

這里請(qǐng)一定進(jìn)行配套的設(shè)置。SDK選擇1.8,Language Level 選擇8。

3. 接下來(lái)添加模塊

添加的第一個(gè)???,創(chuàng)建的方式用maven。模塊的名字叫dao_mod,選擇的模板是quickstart,不用忘了最下方設(shè)置包名,不然會(huì)使用默認(rèn)的org.example

4.接下來(lái)繼續(xù)添加service_mod模塊
方式和dao_mod 一模一樣
5.最后添加web_mod模塊
與前兩個(gè)不一樣的是,它的模板是webapp
6.添加完畢后看一下項(xiàng)目結(jié)構(gòu)

一個(gè)空項(xiàng)目下面有3個(gè)模塊(module)。
7. 在dao_mod中添加MyDao
項(xiàng)目結(jié)構(gòu):

package org.piglite;
public class MyDao {
public String getUsernameById(int id){return "piglite";}
}代碼是玩具代碼。
8.在service_dao中添加MyService
項(xiàng)目結(jié)構(gòu)MyDao類似,代碼也是玩具代碼:
package org.piglite;
public class MyService {
private MyDao mydao = new MyDao();
public String getUsernameById(int id){return mydao.getUsernameById(id);}
}這里需要注意的是MyService內(nèi)部引用了MyDao,但是模塊與模塊之間不像包與包之間導(dǎo)入就可以,而是要建立模塊與模塊之間的依賴(Dependency),也就是service_mod依賴于dao.mod。
9.在web_mod中要添加MyServlet
添加前要做兩件事:1.這是一個(gè)webapp模板,所以要添加名為java的源代碼目錄;2.這是maven構(gòu)建的模塊,通過(guò)maven引入比用的jar文件,包括servlet,jstl和standard。

編輯pom.xml,添加需要導(dǎo)入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避免出現(xiàn)問(wèn)題的前提條件是web_mod中有jstl.jar和standard.jar。
12.修改web.xml,將默認(rèn)的動(dòng)態(tài)網(wǎng)絡(luò)模塊從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.萬(wàn)事俱備,只欠Tomcat
添加TOMCAT的相關(guān)配置,配置細(xì)節(jié)與前面兩篇一樣,server和deployment都需要配置。
14.啟動(dòng)項(xiàng)目
默認(rèn)進(jìn)入http://localhost:8080,會(huì)顯示index.jsp的相關(guān)內(nèi)容。
修改url,進(jìn)入http://localhost:8080/test,會(huì)顯示hello piglite

寫在最后
創(chuàng)建模塊的時(shí)候,不使用maven構(gòu)建,而創(chuàng)建普通的Java模塊也是沒(méi)有問(wèn)題。模塊其實(shí)就可以視為單獨(dú)且功能完整的“小型程序”。普通Java模塊編寫時(shí)需要第三方的Jar就需要手動(dòng)設(shè)置,maven在這方面相對(duì)方便一些。
到此這篇關(guān)于手把手教你使用IDEA創(chuàng)建多模塊(maven)項(xiàng)目的文章就介紹到這了,更多相關(guān)IDEA創(chuàng)建多模塊maven項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過(guò)Java實(shí)現(xiàn)自己動(dòng)手寫ls命令
在前面的文章中,我們仔細(xì)的介紹了關(guān)于ls命令的使用和輸出結(jié)果,在本篇文章當(dāng)中我們用Java代碼自己實(shí)現(xiàn)ls命令,更加深入的了解ls命令2022-10-10
詳解Lombok安裝及Spring Boot集成Lombok
這篇文章主要介紹了詳解Lombok安裝及Spring Boot集成Lombok,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
Java Ehcache緩存框架入門級(jí)使用實(shí)例
這篇文章主要介紹了Java Ehcache緩存框架入門級(jí)使用實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-08-08
SpringBoot-JPA刪除不成功,只執(zhí)行了查詢語(yǔ)句問(wèn)題
這篇文章主要介紹了SpringBoot-JPA刪除不成功,只執(zhí)行了查詢語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel
這篇文章主要介紹了Java 如何快速,優(yōu)雅的實(shí)現(xiàn)導(dǎo)出Excel,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03
如何從Java環(huán)境中調(diào)用GoLang函數(shù)
Go,常被稱為GoLang,Go語(yǔ)言憑借其豐富的標(biāo)準(zhǔn)庫(kù),以及 goroutines和 channels等獨(dú)特特性,在開(kāi)發(fā)可擴(kuò)展且高效的程序方面展現(xiàn)了顯著優(yōu)勢(shì),許多開(kāi)發(fā)者傾向于將Go與其他編程語(yǔ)言結(jié)合使用,在本文中,我們將深入探討如何從Java環(huán)境中調(diào)用GoLang函數(shù),以實(shí)現(xiàn)兩種語(yǔ)言的無(wú)縫集成2025-01-01
MyBatis框架實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)據(jù)查詢操作
本文介紹了MyBatis框架下進(jìn)行數(shù)據(jù)查詢操作的詳細(xì)步驟,括創(chuàng)建實(shí)體類、編寫SQL標(biāo)簽、配置Mapper、開(kāi)啟駝峰命名映射以及執(zhí)行SQL語(yǔ)句等,感興趣的可以了解一下2024-12-12
關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問(wèn)題及解決
這篇文章主要介紹了關(guān)于spring中單例Bean引用原型Bean產(chǎn)生的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

