前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >基于maven的项目脚手架,一键创建项目的项目模板

基于maven的项目脚手架,一键创建项目的项目模板

作者头像
Ryan-Miao
发布于 2019-07-03 09:29:15
发布于 2019-07-03 09:29:15
2.1K00
代码可运行
举报
文章被收录于专栏:Ryan MiaoRyan Miao
运行总次数:0
代码可运行

制作基于maven的项目脚手架

Springboot的出现极大的简化了项目开发的配置,然而,到真实使用的时候还是会有一堆配置需要设定。比如依赖管理,各种插件,质量扫描配置,docker配置,持续集成配置,设置业务独特的架构配置等。这时候,如果创建一个包含这一切的脚手架,当需要创建项目的时候,只要create就好了。

create archetype from project

首先准备一个模板项目,包含了我们想要创建项目的一切基本属性。比如基本dependency bom,比如plugin,比如logback.xml, Dockerfile, Jenkinsfile, k8s.yml等.

比如这样的:

我们期望以后创建的项目都是这种结构,而且生成就可以直接运行,我只要添加我的业务逻辑即可。

首先,执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn clean install

确保项目没有任何问题。然后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn archetype:create-from-project

执行完毕会生成了结构项目:

可以看到大部分文件都拷贝过来了,但依旧有几个文件丢失,比如Jenkinsfile, Dockerfile. 手动拷贝过来。还有些文件不需要,比如.idea的配置文件,删除。确定文件没有问题之后,查看target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml文件,里面定义了哪些文件包含。把不需要的去掉,把需要的加上。比如,导致丢掉Jenkinsfile的配置修改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<fileSet encoding="UTF-8">
      <directory>.deploy</directory>
      <includes>
        <include>**/*</include>
        <include>**/*.yaml</include>
      </includes>
</fileSet>

去掉.idea的配置。

如果代码里有groupId和artifactId的独特配置,观察下有没有变量替换。比如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@MapperScan(basePackages = "${package}.domain.mymodule.mapper")

我们可以使用${package}, ${group}, ${artifactId}, ${version}来代替一些变量。比如,我发现application.yml这个文件没有被替换,里面有重要的spring.application.name应该替换为项目名称。手动修改为 ${artifactId}。这还不行,修改archetype-metadata.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<fileSet filtered="true" encoding="UTF-8">
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.yml</include>
      </includes>
</fileSet>

添加了filtered。

  • filtered表示是否替换文件中的变量
  • packaged表示是否在文件前缀添加group

接下来把模板安装到本地仓库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd target\generated-sources\archetype
mvn clean install

就可以直接使用模板创建项目了。

根据本地模板创建项目

注意我们的模板版本在pom里,比如我的修改几次后版本为1.0.2。则可以

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn archetype:generate  \
 -DarchetypeCatalog=local \
 -DgroupId=com.demo.mybiz \
-DartifactId=mybiz-myid \
-DarchetypeGroupId=com.demo \
-DarchetypeArtifactId=demo-boot-archetype \
-DarchetypeVersion=1.0.2 \
-DinteractiveMode=false 
  • archetypeCatalog=local表示使用本地仓库
  • interactiveMode=false表示不是交互模式,不用选择
  • groupId=com.demo.mybiz 你新项目的group
  • artifactId=mybiz-myid 你新项目的id
  • archetypeGroupId=com.demo 我们模板的group
  • archetypeArtifactId=demo-boot-archetype 我们模板的id
  • archetypeVersion=1.0.1 我们模板的版本

打开查看,确认生成的项目

没有任何问题之后,可以发布模板。

发布模板到maven私服

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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>

最后执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mvn deploy

之后可以直接使用,去掉archetypeCatalog=local即可。

后续展望

脚手架方便生成了公司的基本项目配置和架构,其实还可以做更多。比如对应CI Jenkins的job可以一键生成,比如代码生成后直接创建gitlab项目,关联Jenkins,比如监控面板添加项目配置。

只要输入者设置好项目组和管理人,权限也可以指定。最后做一个home page,登录,填写项目描述,确定生成项目。一个直接可以开发测试运行持续集成持续发布的项目脚手架就算完成了。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用Maven Archetype创建Java项目模板
简而言之,Archetype是一个Maven项目模板工具包。原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的。当我们试图提供一个提供生成Maven项目的一致方法的系统时,这个名字就合适了。Archetype将帮助作者为用户创建Maven项目模板,并为用户提供生成这些项目模板的参数化版本的方法。
东溪陈姓少年
2020/08/06
1.3K0
手写Maven的archetype项目脚手架
  maven是一个很好的代码构建工具,采用“约定优先于配置”的原则进行项目管理,相信很多的java开发者应该都了解maven并可能在工作当中都是通过maven来管理项目的,在创建的项目的时候,我们往往会使用maven内置的项目骨架也就是archetype来快速生成项目结构。但是在一个团队做开发的过程中,可能仅仅依靠maven预先提供的archetyp可能是不够的,团队之间协作有自己的定义方式,每个人的结构定义风格也不尽相同,在这样的背景下我们有必要去定义一个统一的代码骨架供团队使用,这样做的好处是当团队需要开始一个新项目的时候,可以利用自定义的maven骨架一键生成项目。
阿豪聊干货
2018/08/09
1.8K0
手写Maven的archetype项目脚手架
老大说新项目的结构和 xxx 项目一样就可以了,我 ……
" 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了…… "
程序员小航
2020/11/23
8050
老大说新项目的结构和 xxx 项目一样就可以了,我 ……
Maven Archetype 多 Module 自定义代码脚手架
大部分公司都会有一个通用的模板项目,帮助你快速创建一个项目。通常,这个项目需要集成一些公司内部的中间件、单元测试、标准的代码格式、通用的代码分层等等。
艾小仙
2022/01/24
1.1K0
Maven Archetype 多 Module 自定义代码脚手架
Maven私服搭建及自定义Archetype(骨架)
通过私服MAVEN能够更有效的管理自己的依赖包,像阿里云的短信jar包等第三方的依赖包,很多公服是没有的,在比如MAVEN是不支持多个仓库下载的,但是可以配置多个仓库。在私服上就可以解决以上问题。
Vincent-yuan
2021/12/08
1.3K0
Maven私服搭建及自定义Archetype(骨架)
从0到1搭建自己的脚手架(java后端)
Tech 导读 授人以鱼不如授人以渔。给一份项目模板不如教大家怎么制作一份模板和使用模板快速生成新的项目,脚手架可能大家都不陌生,但是很多人只会用不会做。本文来带大家一起从0到1搭建属于自己的脚手架项目。
京东技术
2023/08/22
7030
从0到1搭建自己的脚手架(java后端)
基于start.spring.io,我实现了Java脚手架定制
2020 年,我们公司迎来了业务发展的迅猛期,滋生大量创建工程的需求。总体来说,创建工程面临着以下几个问题。
杨同学technotes
2022/12/01
1.1K0
架构师必备技能:Maven Archetype生成项目模板
Maven插件允许我们从已有项目生成一个模板项目。在项目根目录下执行mvn archetype:create-from-project命令即可将该项目生成一个项目模板,生成的项目原型被保存在路径target/generated-sources/archetype下。
码农小胖哥
2021/09/09
4K0
使用 Jenkins 和 Ansible 实现 CI/CD
当下,Kubernetes 在容器编排大战中取得了胜利。我们中的一些人怀着羡慕的心情阅读着硅谷创业公司的那些文章(是的,或许你所在的城市已经有了这些创业公司了!),然而读完之后还是回到自己手上运行得还可以的遗留的老系统上工作。
LinuxSuRen
2020/09/14
1.4K0
万字 Maven 入门教程
Maven 这个词可以翻译为专家的意思。它是由 Apache 组织的开源,主要服务 Java 平台项目的构建、依赖管理和项目信息管理。
羽月
2022/10/08
1.6K0
万字 Maven 入门教程
vue脚手架创建项目
Vue作为现在前端三大框架之一,又是国人开发的,现在已经越来越火。作为最轻量级的一个前端框架,入门简单,今天用脚手架创建一个最简单的应用。
wade
2020/04/24
5370
vue脚手架创建项目
我把DDD脚手架,发布到了Maven仓库,大家都能用了!
这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD(领域驱动设计)脚手架,搭建工程项目,增强使用的便捷性。让👬🏻兄弟们直接在 IntelliJ IDEA 配置个在线的链接,就能直接用上这款脚手架!—— 你就说猛不猛!🤨
小傅哥
2024/03/13
4180
我把DDD脚手架,发布到了Maven仓库,大家都能用了!
如何发布自己的项目到Maven中央仓库?
在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。
程序新视界
2020/07/29
5.8K1
如何发布自己的项目到Maven中央仓库?
《Maven实战》全书总结
把MAVEN_HOME/conf/seettings.xml cp 到 ~/.m2/下,在.m2下的settings.xml中所作的配置就是用户级别的配置,而直接编辑MAVEN_HOME/conf/seettings.xml所作的配置是全局的配置
CoderJed
2018/09/13
1.9K0
《Maven实战》全书总结
使用 maven 生成一个支持端到端自动测试的 RESTful 服务项目脚手架
和传统后端页面生成技术相较, RESTful 数据服务专注与数据逻辑, 而将数据呈现完全交给前端应用. 这样做可以让后端开发更加单纯, 而且更容易测试. 本文将讲述如何使用 maven 生成一个支持端到端自动测试的 RESTful 服务的项目脚手架.
吴生
2018/05/15
1.1K0
Maven 极简教程「附」常用的 Maven 命令
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。Maven 基于项目对象模型(POM):
一个会写诗的程序员
2021/03/02
2K0
Maven 极简教程「附」常用的 Maven 命令
聊聊项目打包发布到maven私仓常见的几种方式
在早期没有使用maven之前,我们引用一些公有jar或者api jar,我们可能会采用这样的方式,通过手动导入这些jar到项目的classpath路径进行引用。
lyb-geek
2021/03/10
3.9K0
聊聊项目打包发布到maven私仓常见的几种方式
老是要创建模块,又是只能拷贝目录了?
各位小伙伴们在刚学java的时候是怎样创建spring项目的呢,有些小伙伴是使用的Spring Initializer自动生成项目结构,有些小伙伴是创建一个空的maven项目,然后自己配置对应的dependencies来创建项目。但是无论哪种方式,都无法达到我们一些定制化的需求,比如创建完整的目录结构。此时就需要一个模版,当我们每次创建这个模版对应的maven项目的时候就创建一样的目录结构,有着一样的依赖。这个模版就依赖于今天要讲的maven archetype。
用户8902830
2022/09/22
3780
老是要创建模块,又是只能拷贝目录了?
Maven POM 标签大全详解(下)
<!--如果指定的文件存在,则激活profile。 --> <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ </exists> <!--如果指定的文件不存在,则激活profile。 --> <m
陈不成i
2021/07/14
5900
使用umi脚手架 创建项目 详细教程
如果umi -v 无法显示版本号, 检查下是否是npm 或者yarn全局安装, 是否配置了环境变量
拿我格子衫来
2022/01/24
2.6K0
使用umi脚手架 创建项目 详细教程
相关推荐
使用Maven Archetype创建Java项目模板
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文