Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
在多數企業的軟件開發生態中,項目初始化往往遵循一套既定的模板規范,通常需要集成一些公司內部的中間件、通用的代碼分層、標準的代碼格式等等。傳統的項目啟動方式是簡單復制舊項目并手動調整包名與配置,不僅效率低下,且容易因人為疏忽而導致錯誤,增加了項目的維護成本與風險。
Maven Archetype 作為一種項目模板工具,能夠讓我們輕松定義項目的基礎結構,包括必要的依賴、配置文件模板乃至特定的代碼片段,從而實現新項目的標準初始化。這不僅極大地簡化了項目創建的流程,減少了重復勞動,還確保了項目的一致性和規范性,讓開發者能夠更專注于核心業務邏輯的實現。
Maven Archetype 是 Maven 項目中的一種模板機制,它可以根據已有項目生成一個模板項目,為我們快速創建一個 Maven 項目的骨架結構,包括目錄、文件和配置等。這樣,我們就可以基于這個標準化的項目結構快速啟動新項目,而無需從頭開始編寫所有內容。
mvn archetype:create-from-project
執行成功后,項目根目錄下會生成 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 下依賴引用的各個 module,改為如下格式:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-adapter</artifactId>
<version>${project.version}</version>
</dependency>
mvn install
執行成功后,.m2\repository 目錄下會生成 archetype-catalog.xml 文件。
mvn deploy
Maven Archetype 是一個強大的工具,它可以幫助我們快速創建項目的骨架結構,節省了繁瑣的配置和初始化工作。通過自定義 Archetype,我們可以根據項目需求定制模板,提高開發效率。使用 Archetype 時,只需在 IDEA 中添加相應的 Catalog 和 Archetype,填寫項目信息即可快速創建項目。希望本文能幫助你更好地了解和使用Maven Archetype。
作者:當貝技術團隊
來源-微信公眾號:當貝技術團隊
出處:https://mp.weixin.qq.com/s/516n2bPvZd1NZh6juSS92A
技術棧 | 版本 | 說明 |
java | ≥17.0.2 | JDK版本 |
springframework | 6.1.11 | JavaEE開發框架 |
springboot | 3.3.2 | 容器+MVC框架 |
gradle | 8.9 | 自動化構建工具 |
lombok | 1.18.32 | Java工具類庫 |
knife4j | 4.5.0 | Swagger增強組件 |
前提還是需要具備JAVA開發的基礎概念,比如安裝JDK環境。
1. 創建空項目
使用 Spring Initializr 「https://start.spring.io/」快速創建Spring項目
在 Dependencies 對話框中搜索并添加 web 依賴關系,如屏幕截圖所示。點擊“生成”按鈕,下載壓縮包,并將其解壓縮到計算機本地。
Spring Initializr
2. 編寫基礎的 Gradle 相關腳本
以下按相對項目的根目錄進行說明,如文件不存在 可以手動創建:
# 當前項目版本
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. 創建 Springboot 啟動類
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 項目這就可以正式啟動啦!
項目啟動效果
4. 整合 Swagger
只需一步即可!引入 Knife4j Swagger 增加工具包:
dependencies {
// Swagger
implementation 'com.github.xiaoymin:knife4j-openapi3-jakarta-spring-boot-starter:4.5.0'
}
讓我們添加一個接口,測試下 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 版本說明
以上,我們完成了一個新的網站項目的初始化,并查看網站項目的OpenAPI!
關注點贊收藏不迷路!!振鎖會持續給大家分享大廠一線的開發經驗,手把手從0到架構設計!成為獨當一面的多面手!!
aven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
1.創建maven項目
1.1打開eclipse,在工作區右擊鼠標,選擇new,然后選擇Other
1.2找到maven文件夾,選擇Maven Project,點擊Next繼續
1.3繼續點擊Next
1.4選中maven-archetype-webapp這一行
1.5Group Id和Artifact Id都填入RedisWebServer,Package填入com.java,package可以不寫,是它默認幫你新建一個包,不寫沒關系,點擊Finish
2.下面新建好的項目結構,默認有一個src/main/resources的目錄,我們再新建一個src/main/java的目錄
3.鼠標右擊項目,選中最下面的Properties
4.看到src/main/java和src/test/java 是missing狀態,把這兩個Remove掉
5.點擊create new folder,新建src/main/java和src/test/java
6.修改web.xml內容
刪除<!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.設置Maven啟動方式
8.啟動項目,訪問首頁,看看是否成功
*請認真填寫需求信息,我們會在24小時內與您取得聯系。