(一) Maven Archetype模板工程入门——local方式

一、软件准备****

软件名称或操作系统**** 版本**** 备注****
Mac OSX/Win10/Win11**** 11.2/x64/x64**** ****
IntelliJ IDEA 2019+ 安装插件lombok
Maven**** 3.6.1**** ****

软件安装步骤:略

二、微服务模板工程开发环境搭建前置准备****

1. 构建Springboot demo模板项目

(1) 选择工程类型****

1) 该教程以模板工程:Spring Initializar做为示范工程。如下图所示:

图片.png

2) 依据实际情况填写,选择需要的组件,参考下图亦可。

图片.png

最后点击【Finish】,创建mavenArchetype模板工程。

3) 构建完成的项目结构。

图片.png  

4) 打开模板项目等待依赖项下载完成。

图片.png  

(2) 添加 模板 工程测试依赖包****

选择【pom.xml】文件,查看Web测试依赖包。

<dependencies>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>mysql</groupId>-->
<!--            <artifactId>mysql-connector-java</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <groupId>org.apache.maven.plugins</groupId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
复制代码

(3) 查看 模板工程 运行情况****

图片.png

(4) 模板工程构建完成****

至此,模板工程构建完成,满足以下功能(请自行测试,此处不做赘述):

1) Web服务;

2) 数据库访问;

3) 热部署;

4) Lombok自动生成getter与setter;

5) Maven自动构建。

2. 使用 Maven 生成本地模板****

(1) 依据工程目录创建项目模板文件****

工程根目录键入如下命令:

mvn archetype:create-from-project

项目模板存放:

项目根目录/target/generated-sources/archetype/src/main/resources/archetype-resource

项目模板配置文件:

项目根目录/target/generated-sources/archetype/src/main/resources/maven/archetype-metadata.xml

(2) 安装项目模板至仓库****

PS:此处为本地仓库,远程仓库后续再做讲解

1) 进入项目根目录/target/generated-sources/archetype

2) 执行以下命令:mvn clean install

3) 执行成功如下所示:

图片.png 完成模板工程在本地仓库的安装。

4) 核对模板工程目录结构,如下图所示:

图片.png

至此,模板工程创建成功。

(3) 查看模板工程****

进入系统默认maven本地仓库目录:

macOS:

/usr/{用户名}/.m2/repository

Windows:

C:/用户/{用户名}/.m2/repository

图片.png

图片.png

(4) 查看模板工程配置文件信息****

图片.png

模板工程archetype-catalog.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.maven.archetype</groupId>
      <artifactId>mavenArchetype-archetype</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <description>Demo project for Spring Boot</description>
    </archetype>
  </archetypes>
</archetype-catalog>
复制代码

3. 使用模板生成新工程****

(1) 命令行方式生成****

命令解析:

命令行 作用与说明
mvn archetype:generate  
-DgroupId=com.maven.archetype.test              #新建项目的工程名
-DartifactId=mavneArchetypeTest #要创建的项目名称
-Dversion=1.0.0-SNAPSHOT #要创建的项目的版本号
-Dpackage=com.maven.archetype #要创建的项目的基础包名
-DarchetypeGroupId=com.maven.archetype #./m2下的xml里的标签值
-DarchetypeArtifactId=mavenArchetype-archetype #./m2下的xml里的标签值
-DarchetypeVersion=0.0.1-SNAPSHOT #./m2下的xml里的标签值
-B  
-DarchetypeCatalog=local #从本地仓库选取模板
-DinteractiveMode=false

Windows下可执行命令:

命令1:

mvn archetype:generate ^ -DgroupId=com.maven.archetype.test ^      -DartifactId=mavneArchetypeTest ^ -Dversion=1.0.0-SNAPSHOT ^ -Dpackage=com.maven.archetype ^ -DarchetypeGroupId=com.maven.archetype ^ -DarchetypeArtifactId=mavenArchetype-archetype ^ -DarchetypeVersion=0.0.1-SNAPSHOT ^ -B ^ -DarchetypeCatalog=local ^ -DinteractiveMode=false

命令2:

mvn archetype:generate -DgroupId=com.maven.archetype.test -DartifactId=mavneArchetypeTest -Dversion=1.0.0-SNAPSHOT -Dpackage=com.maven.archetype -DarchetypeGroupId=com.maven.archetype -DarchetypeArtifactId=mavenArchetype-archetype -DarchetypeVersion=0.0.1-SNAPSHOT -B -DarchetypeCatalog=local -DinteractiveMode=false

(2) 查看 依据项目模板生成的新工程 情况****

图片.png

新工程与模板工程目录结构请自行比对:

图片.png

Pom.xml文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.maven.archetype.test</groupId>
    <artifactId>mavneArchetypeTest</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>mavneArchetypeTest</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>mysql</groupId>-->
<!--            <artifactId>mysql-connector-java</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <groupId>org.apache.maven.plugins</groupId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
复制代码

三、启动新工程****

图片.png

四、手动生成模板工程步骤****

MacOS生成方式

1. mvn archetype:create-from-project

2. cd target/generated-sources/archetype

3. mvn clean install

4. mvn archetype:generate -DarchetypeCatalog=local

5. open /Users/test/mavenArchtypeTest/

6. mvn archetype:create-from-project

7. mvn install

8. mvn clean install

9. mvn archetype:crawl

10. mvn deploy

说明:其中第9,第10步需要结合Nexus方可完成,同时需要配置pom.xml中私服的相关配置,待后续文章中逐一阐述。

Windows部分命令请自行调整

模板工程源码下载:gitee.com/CodeCaptain…

新工程源码下载:gitee.com/CodeCaptain…

五、FAQ****

问题1:maven-compiler-plugin:3.8.1 Fatal error compiling: 无效的目标发行版: 17****

解决方法:

修改pom.xml中以下信息,与标签为1.8

<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <groupId>org.apache.maven.plugins</groupId>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
    </configuration>
</plugin>
复制代码

问题2:maven-archetype-plugin:3.2.1:create-from-project 依据当前项目创建失败****

描述:

图片.png

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.2.1:create-from-project (default-cli) on project maven Archetype: Invoker process ended with result different than 0!

解决方法:

尝试在以下目录加入maven 的settings.xml。此处可复用,maven安装目录下conf中的settings.xml至:macOS:/usr/{用户名}/.m2/repository Windows:C:/用户/{用户名}/.m2/repository

猜你喜欢

转载自juejin.im/post/7096759074028847117