在多數(shù)企業(yè)的軟件開發(fā)生態(tài)中,項(xiàng)目初始化往往遵循一套既定的模板規(guī)范,通常需要集成一些公司內(nèi)部的中間件、通用的代碼分層、標(biāo)準(zhǔn)的代碼格式等等。傳統(tǒng)的項(xiàng)目啟動(dòng)方式是簡單復(fù)制舊項(xiàng)目并手動(dòng)調(diào)整包名與配置,不僅效率低下,且容易因人為疏忽而導(dǎo)致錯(cuò)誤,增加了項(xiàng)目的維護(hù)成本與風(fēng)險(xiǎn)。
Maven Archetype 作為一種項(xiàng)目模板工具,能夠讓我們輕松定義項(xiàng)目的基礎(chǔ)結(jié)構(gòu),包括必要的依賴、配置文件模板乃至特定的代碼片段,從而實(shí)現(xiàn)新項(xiàng)目的標(biāo)準(zhǔn)初始化。這不僅極大地簡化了項(xiàng)目創(chuàng)建的流程,減少了重復(fù)勞動(dòng),還確保了項(xiàng)目的一致性和規(guī)范性,讓開發(fā)者能夠更專注于核心業(yè)務(wù)邏輯的實(shí)現(xiàn)。
Maven Archetype 是 Maven 項(xiàng)目中的一種模板機(jī)制,它可以根據(jù)已有項(xiàng)目生成一個(gè)模板項(xiàng)目,為我們快速創(chuàng)建一個(gè) Maven 項(xiàng)目的骨架結(jié)構(gòu),包括目錄、文件和配置等。這樣,我們就可以基于這個(gè)標(biāo)準(zhǔn)化的項(xiàng)目結(jié)構(gòu)快速啟動(dòng)新項(xiàng)目,而無需從頭開始編寫所有內(nèi)容。
mvn archetype:create-from-project
執(zhí)行成功后,項(xiàng)目根目錄下會(huì)生成 target 文件夾。
<modules>
<module>${rootArtifactId}-adapter</module>
<module>${rootArtifactId}-app</module>
<module>${rootArtifactId}-client</module>
<module>${rootArtifactId}-common</module>
<module>${rootArtifactId}-domain</module>
<module>${rootArtifactId}-infrastructure</module>
<module>${rootArtifactId}-start</module>
</modules>
修改 dependencyManagement 下依賴引用的各個(gè) module,改為如下格式:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-adapter</artifactId>
<version>${project.version}</version>
</dependency>
mvn install
執(zhí)行成功后,.m2\repository 目錄下會(huì)生成 archetype-catalog.xml 文件。
mvn deploy
Maven Archetype 是一個(gè)強(qiáng)大的工具,它可以幫助我們快速創(chuàng)建項(xiàng)目的骨架結(jié)構(gòu),節(jié)省了繁瑣的配置和初始化工作。通過自定義 Archetype,我們可以根據(jù)項(xiàng)目需求定制模板,提高開發(fā)效率。使用 Archetype 時(shí),只需在 IDEA 中添加相應(yīng)的 Catalog 和 Archetype,填寫項(xiàng)目信息即可快速創(chuàng)建項(xiàng)目。希望本文能幫助你更好地了解和使用Maven Archetype。
作者:當(dāng)貝技術(shù)團(tuán)隊(duì)
來源-微信公眾號(hào):當(dāng)貝技術(shù)團(tuán)隊(duì)
出處:https://mp.weixin.qq.com/s/516n2bPvZd1NZh6juSS92A
技術(shù)棧 | 版本 | 說明 |
java | ≥17.0.2 | JDK版本 |
springframework | 6.1.11 | JavaEE開發(fā)框架 |
springboot | 3.3.2 | 容器+MVC框架 |
gradle | 8.9 | 自動(dòng)化構(gòu)建工具 |
lombok | 1.18.32 | Java工具類庫 |
knife4j | 4.5.0 | Swagger增強(qiáng)組件 |
前提還是需要具備JAVA開發(fā)的基礎(chǔ)概念,比如安裝JDK環(huán)境。
1. 創(chuàng)建空項(xiàng)目
使用 Spring Initializr 「https://start.spring.io/」快速創(chuàng)建Spring項(xiàng)目
在 Dependencies 對(duì)話框中搜索并添加 web 依賴關(guān)系,如屏幕截圖所示。點(diǎn)擊“生成”按鈕,下載壓縮包,并將其解壓縮到計(jì)算機(jī)本地。
Spring Initializr
2. 編寫基礎(chǔ)的 Gradle 相關(guān)腳本
以下按相對(duì)項(xiàng)目的根目錄進(jìn)行說明,如文件不存在 可以手動(dòng)創(chuàng)建:
# 當(dāng)前項(xiàng)目版本
projectVersion=0.1.0-SNAPSHOT
# SpringBoot版本
springbootVersion=3.3.2
# JDK最低版本
jdkVersion=17
buildscript {
repositories {
mavenLocal()
maven { url "https://maven.aliyun.com/repository/public/" }
}
dependencies {
/* 添加插件依賴路徑(通過jar方式) */
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springbootVersion}"
}
}
allprojects {
apply plugin: "idea"
apply plugin: "java"
apply plugin: "org.springframework.boot"
apply plugin: "io.spring.dependency-management"
group='com.app4j.stack'
version=projectVersion
java {
toolchain {
languageVersion=JavaLanguageVersion.of(jdkVersion)
}
}
configurations {
// 排除tomcat
all*.exclude module: 'spring-boot-starter-tomcat'
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenLocal()
maven { url "https://maven.aliyun.com/repository/public/" }
}
dependencies {
// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
// Spring Web
implementation 'org.springframework.boot:spring-boot-starter-web'
// 使用undertow 替換tomcat
implementation 'org.springframework.boot:spring-boot-starter-undertow'
}
}
3. 創(chuàng)建 Springboot 啟動(dòng)類
com.app4j.web.WebApplication
package com.app4j.web;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
/**
* @author eric.hao
* @since 2024/07/18
*/
@Slf4j
@SpringBootApplication
public class WebApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(WebApplication.class).run(args);
log.info("[App4j] Application Started.");
}
}
ok 項(xiàng)目這就可以正式啟動(dòng)啦!
項(xiàng)目啟動(dòng)效果
4. 整合 Swagger
只需一步即可!引入 Knife4j Swagger 增加工具包:
dependencies {
// Swagger
implementation 'com.github.xiaoymin:knife4j-openapi3-jakarta-spring-boot-starter:4.5.0'
}
讓我們添加一個(gè)接口,測(cè)試下 swagger 的效果:
package com.app4j.web.knife4j;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author eric.hao
* @since 2024/07/27
*/
@RestController
@RequestMapping("/demo")
@Tag(name="示例接口")
public class Knife4jController {
@Operation(summary="向客人問好")
@PostMapping("/sayHi")
public ResponseEntity<?> sayHi(@RequestParam(value="name") String name) {
return ResponseEntity.ok("Hi:" + name);
}
}
訪問接口文檔的本地地址:http://127.0.0.1:8080/doc.html
Swagger 界面效果
重要提示:為什么這次不用配置Docket Bean,就可以看到接口清單?
Knife4j 自4.0版本,下面的配置在 knife4j-openapi2-spring-boot-starter 中仍然需要如此配置,而在 knife4j-openapi3-spring-boot-starter 和 knife4j-openapi3-jakarta-spring-boot-starter 則不需要!!!
Knife4j 版本說明
以上,我們完成了一個(gè)新的網(wǎng)站項(xiàng)目的初始化,并查看網(wǎng)站項(xiàng)目的OpenAPI!
關(guān)注點(diǎn)贊收藏不迷路!!振鎖會(huì)持續(xù)給大家分享大廠一線的開發(fā)經(jīng)驗(yàn),手把手從0到架構(gòu)設(shè)計(jì)!成為獨(dú)當(dāng)一面的多面手!!
aven是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對(duì)象模型 (Project Object Model),一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期(Project Lifecycle),一個(gè)依賴管理系統(tǒng)(Dependency Management System),和用來運(yùn)行定義在生命周期階段(phase)中插件(plugin)目標(biāo)(goal)的邏輯。當(dāng)你使用Maven的時(shí)候,你用一個(gè)明確定義的項(xiàng)目對(duì)象模型來描述你的項(xiàng)目,然后Maven可以應(yīng)用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
1.創(chuàng)建maven項(xiàng)目
1.1打開eclipse,在工作區(qū)右擊鼠標(biāo),選擇new,然后選擇Other
1.2找到maven文件夾,選擇Maven Project,點(diǎn)擊Next繼續(xù)
1.3繼續(xù)點(diǎn)擊Next
1.4選中maven-archetype-webapp這一行
1.5Group Id和Artifact Id都填入RedisWebServer,Package填入com.java,package可以不寫,是它默認(rèn)幫你新建一個(gè)包,不寫沒關(guān)系,點(diǎn)擊Finish
2.下面新建好的項(xiàng)目結(jié)構(gòu),默認(rèn)有一個(gè)src/main/resources的目錄,我們?cè)傩陆ㄒ粋€(gè)src/main/java的目錄
3.鼠標(biāo)右擊項(xiàng)目,選中最下面的Properties
4.看到src/main/java和src/test/java 是missing狀態(tài),把這兩個(gè)Remove掉
5.點(diǎn)擊create new folder,新建src/main/java和src/test/java
6.修改web.xml內(nèi)容
刪除<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
添加<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
7.設(shè)置Maven啟動(dòng)方式
8.啟動(dòng)項(xiàng)目,訪問首頁,看看是否成功
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。