使用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即可

浙公网安备 33010602011771号