maven脚手架

本文介绍了Maven脚手架,它可避免项目间重复复制粘贴。涵盖内置脚手架查看、web脚手架生成标准Java - web项目、父子模块项目拆分及打包,还详细说明了基于web项目创建自定义脚手架的步骤,最后介绍了使用本地脚手架的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

maven脚手架是相同的目录结构或项目依赖在多个项目之间复制粘贴的重复动作的克星。

内置脚手架

mvn  archetype:generate

使用上述命令可以查看当前支持的脚手架

 

web脚手架

使用web项目脚手架,可以生成一个标准的java-web项目

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

-D的archetypeArtifactId可以指定你是要使用哪个脚手架

 接下来会在命令行中依次询问你项目的信息,group,artifactId,version,packaging等等。

生成的是一个标准的java-web项目的目录结构

 

父子模块项目

在大型的项目中,我们一般会采用父子模块的方式对项目进行拆分,划分成不同的子模块便于更新升级。

 通常是是一个主项目,依赖其他的子包:

 

1. 在根目录下生成父pom

mvn archetype:generate -DgroupId=com.apress.gswmbook -DartifactId=gswm-parent -Dversion=1.0.0-SNAPSHOT -DarchetypeGroupId=org.codehaus.mojo.archetypes -DarchetypeArtifactId=pom-root

这里使用的脚手架是pom-root

这样生成的父pom,packaging方式是pom

 

2. 生成子模块

在父模块的根目录下,执行

mvn archetype:generate -DgroupId=com.apress.gswmbook -DartifactId=gswm-web -Dversion=1.0.0-SNAPSHOT -Dpackage=war -DarchetypeArtifactId=maven-archetype-webapp

这里生成了一个java-web项目

接下来生成一个service模块

mvn archetype:generate -DgroupId=com.apress.gswmbook -DartifactId=gswm-service -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这里没有指定packaging,默认是jar

在生成一个仓储模块

mvn archetype:generate -DgroupId=com.apress.gswmbook -DartifactId=gswm-repository -Dversion=1.0.0-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false 

这样,生成的三个子模块在父pom中就自动进行了声明:

 说明他们存在父子关系。

同样的,子模块也自动添加了parent标签,用于声明父模块信息

 现在,执行打包命令即可完成项目的打包

 

创建自定义脚手架

我们基于刚刚web项目创建一个脚手架。

1. 首先将gswm-web项目的代码复制到新建的gswm-web-prototype目录,移除冗余的文件(target等)。修改web.xml为通用的模板

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" xmlns="http://xmlns.jcp.org/xml/ns/ javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
    <display-name>Archetype Created Web Application</display-name> 
</web-app>

2. 更新pom文件,添加必要的依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

<modelVersion>4.0.0</modelVersion> 
<groupId>com.apress.gswmbook</groupId> 
<artifactId>gswm-web</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version>

<name>gswm-web Maven Webapp</name> 
<url>http://maven.apache.org</url> 

<dependencies>
    <dependency> 
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId> 
        <version>4.0.1</version> 
        <scope>provided</scope>
    </dependency>
</dependencies>
  
<build>
    <finalName>gswm-web</finalName> 
    <plugins>
        <plugin> 
            <groupId>org.eclipse.jetty</groupId> 
            <artifactId>jetty-maven-plugin</artifactId> 
            <version>9.4.12.RC2</version>
        </plugin>
    </plugins>
</build>

</project>

这里添加了javax.servlet.api依赖

3. 新增必要的文件目录,如src/main/java   src/test/java   src/test/resources

4. 创建一个健康检查类 AppStatusServlet.java

package com.apress.gswmbook.web.servlet;
import javax.servlet.annotation.WebServlet; 
import javax.servlet.∗;
import javax.servlet.http.∗;
import java.io.∗;

@WebServlet("/status")
public class AppStatusServlet extends HttpServlet {
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
            PrintWriter writer = response.getWriter(); 
            writer.println("OK"); 
            response.setStatus(response.SC_OK);
      } 
}

截至目前,这个项目结构如下

5. 创建脚手架

mvn archetype:create-from-project 

 执行上述语句会在gswm-web-prototype/target/generated-sources/archetype目录下生成脚手架。

6. 将产出的文件复制到新的目录gswm-web-archetype做微调

将生成的pom、src、以及相关的文件复制到新目录

 因为现在项目的相关信息都是写死的,我们需要调整一下让项目生成时自动获取项目的名称、包路径等信息,然后替换。

7. 修改脚手架项目的artifactId

根目录下的pom文件中的artifactId改为gswm-web-archetype

 8. 模版pom中的artifactId修改为${artifactId}

这样模板生成的时候会自动替换

 9. 修改模版类的目录

 archetype-resources中的类会平迁到新的项目,因此可以控制类的包路径。

10. 发布脚手架

mvn clean install

使用脚手架

使用本地脚手架,采用下面的命令,从罗列的脚手架中选择即可使用

mvn archetype:generate -DarchetypeCatalog=local

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值