Fork me on GitHub

使用maven项目脚手架快速搭建项目

一、简介

spring boot的出现极大的简化了项目开发的配置,然而到真实使用的时候还是会有一堆配置需要设定,比如依赖管理、各种扫描配置、docker配置等。而且每个人开发习惯不同,对于这些大同小异、但是又往往必要的配置文件、项目结构做好规范,大家在此基础上进行业务再开发,往往可以避免踩坑、事半功倍。

项目脚手架要解决的问题是:

  • 项目&包层次结构不统一
  • 配置文件命名、存放位置不统一
  • 类命名不统一

要达到的基本目标是:

  • 统一规范工程项目&代码层次结构——约定大于配置
  • 提升工作效率——脚手架&代码生成器&自定义插件
  • 降低项目维护成本——易于组内成员相互协防

为了达到这样的目的,可以建立一个模板,每次使用的时候直接从这个模板中复制后微调即可以使用( 模板中还包括了基本的demo代码用以指导开发)。这些都可以通过maven项目脚手架完成。

二、创建模板项目

首先准备一个模板项目,包含了想要创建项目的一切基本属性。也就是说期望以后创建的项目都是这种结构,而且生成就可以直接运行,我只要添加我的业务逻辑即可。

可以通过执行以下命令,确保项目没有任何问题

mvn -s ".\conf\settings-jeecg.xml" clean install

然后通过以下命令生成结构项目

mvn -s ".\conf\settings-jeecg.xml" archetype:create-from-project

目录结构大体如下:

按需编辑archetype-metadata.xml(target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml)文件。里面定义了哪些文件包含。把不需要的去掉,把需要的加上。

也可以指定其中文件的变量替换

<fileSets>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.java</include>
            </includes>
        </fileSet>
        <fileSet filtered="true" packaged="true" encoding="UTF-8">
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
            </includes>
        </fileSet>
    </fileSets>
<requiredProperties>
        <requiredProperty key="artifactId"/>
        <requiredProperty key="groupId">
            <defaultValue>com.pers</defaultValue>
        </requiredProperty>
        <requiredProperty key="package">
            <defaultValue>${groupId}</defaultValue>
        </requiredProperty>
        <requiredProperty key="myIdentify">
            <defaultValue>${myIdentify}</defaultValue>
        </requiredProperty>
    </requiredProperties>

要注意:filtered表示是否替换文件中的变量;packaged表示是否在文件前缀添加group

如果java代码或者.properties文件中有变量的配置,观察下有没有变量替换。比如

@MapperScan(basePackages = "${applicationName}.${myIdentify}")

注意:这些文件的修改都是指的是target/generated-sources/archetype/下的文件。

然后在路径target/generated-sources/archetype/下,通过以下命令把模板安装到本地仓库。

mvn clean install

接着就可以根据本地模板创建项目了

mvn archetype:generate -DarchetypeCatalog=local -DarchetypeGroupId=org.jeecgframework.boot -DarchetypeArtifactId=jeecg-boot-cs-archetype -DarchetypeVersion=1.0.0 -DinteractiveMode=true -settings D:\apache-maven-3.6.3\conf\settings-jeecg.xml
  • archetypeCatalog=local表示使用本地仓库
  • interactiveMode=false表示不是交互模式,不用选择
  • groupId=org.jeecg 你新项目的group
  • artifactId=mydemo 你新项目的id
  • archetypeGroupId=org.jeecgframework.boot我们模板的group
  • archetypeArtifactId=jeecg-boot-cs-archetype 我们模板的id
  • archetypeVersion=1.0.0 我们模板的版本

发布模板到maven私服

发布maven私服就和发布普通maven项目一样,配置好url就可以了。pom添加

<distributionManagement>
    <repository>
        <id>my-releases</id>
        <url>http://maven.mymaven.com/nexus/content/repositories/release/</url>
    </repository>
    <snapshotRepository>
        <id>my-snapshots</id>
        <url>http://maven.mymaven.com/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>

其中id一定要对应本地maven的settings.xml

<servers>
    <server>
        <id>my-snapshots</id>
        <username>myuser</username>
        <password>mypass</password>
    </server>
    <server>
        <id>my-releases</id>
        <username>myuser</username>
        <password>mypass</password>
    </server>
</servers>

最后执行 mvn deply 。之后可以直接使用,去掉archetypeCatalog=local即可

posted @ 2020-10-11 12:04  ayueC  阅读(274)  评论(0)    收藏  举报