Maven自定义脚手架(多module模块)+自定义参数

这篇具有很好参考价值的文章主要介绍了Maven自定义脚手架(多module模块)+自定义参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

视频教程:Maven保姆级教程
Maven入门教程(一):安装Maven环境
Maven入门教程(二):idea/Eclipse使用Maven
Maven入门教程(三):Maven语法
Maven入门教程(四):Nexus私服
Maven入门教程(五):自定义脚手架

脚手架

视频教程:
Maven保姆级教程

脚手架是一个项目模板,包含常用的工程结构、代码。

1 自定义脚手架

脚手架创建的步骤如下,先创建一个工程,把常用的代码写好,进入工程根目录,进行如下操作:

打包模板
mvn archetype:create-from-project

进入模板目录,修改文件配置
cd ./target/generated-sources/archetype

如果想让文件中的替换变量生效,需要先修改META-INF.maven/archetype-metadata.xml
将对应目录或文件增加 filtered=“true”
再使用变量替换对应文件内容

部署本地
mvn install

上传仓库
mvn deploy

下面用一个多模块的项目做演示,包含xml文件,yml文件,和其他文件。

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

我们要创建一个脚手架,使用这个脚手架创建工程时,xxx要替换成指定值。

在根目录下创建archetype.properties文件

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

archetype.groupId=com.test.maven
archetype.artifactId=archetype-test
archetype.version=1.0-SNAPSHOT
excludePatterns=**/.idea/**,**/*.iml

archetype-test(父工程)的pom中加入:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-archetype-plugin</artifactId>
      <version>3.2.0</version>
    </plugin>
  </plugins>
</build>

进入项目根目录,执行mvn archetype:create-from-project

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

执行成功后,跟目录下会有一个target文件夹生成

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

接着要替换占位符,比如每个项目名字不一样,xxx要替换成项目名,每个项目package前缀不一样,也要替换;

常用占位符如下:

Variable Meaning
_rootArtifactId_ 做文件夹名替换用,例如_rootArtifactId_-dao, 占位符来动态获取父工程的ArtifactId
${rootArtifactId} 它保存用户输入的值作为项目名(maven在用户运行原型时在提示符中询问为artifactid:的值)
${artifactId} 如果您的项目由一个模块组成,则此变量的值将与${rootArtifactId}相同,但如果项目包含多个模块,则此变量将由每个模块文件夹中的模块名替换
`${package} 用户为项目提供的包,也在用户运行原型时由maven提示
${packageInPathFormat} 与${package}变量的值相同,但将“.”替换为字符“/”,例如:,对于包com.foo.bar,此变量为com/foo/bar
${groupId} 用户为项目提供的groupid,在用户运行原型时由maven提示
${version} 版本号

首先替换module的名字,把xxx替换成_rootArtifactId_,注意两边是两个下划线

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kg2ParTl-1692174116914)(/image-20230815094204095.png)]

接着依次点开每一个编译后的文件,查看一下有没有没替换的占位符,正常编译好的,动态部分都会替换掉,如下图:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

但是也会有一些替换错的,有时候package前缀和groupId一样时,一些package会被替换成groupId,我们要手动修正它;

当前项目里,这个application.yml就没有被替换掉

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

改成如下形式:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

接着是核心文件:archetype-metadata.xml

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

找到modules节点,每个modules都要替换,

module属性介绍:

  • id:子模块工程的artifactId

  • dir:子模块工程源文件在archetype-resources里对应的directory

  • name :子模块的名字.,可定制化自己的服务模块。

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

替换成

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

如果有其他自定义参数,比如项目中的xxx和类名中的Xxx需要替换,可以自定义参数,自定义参数在archetype-metadata.xml里加入<requiredProperties>

key是属性名,defaultValue时默认名

 <!--属性变量定义-->
  <requiredProperties>
    <requiredProperty key="appName">
      <defaultValue>demo</defaultValue>
    </requiredProperty>
    <requiredProperty key="appNameCap">
      <defaultValue>Demo</defaultValue>
    </requiredProperty>
  </requiredProperties>

去替换文件中的内容,路径中的参数是双下划线_参数名_,文件内部的参数是${参数名}

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

一般xml文件、java文件模板会自动替换占位符,另外有一些自定义文件,模板不会识别,比如sh脚本、md文件等,我们以Dockerfile为例(随便自己定义个文件也行),在archetype-metadata.xml写<fileSets>

    <fileSets>
        <!-- 写进模板,但不替换的占位符的,不设置 filtered="true"即可-->
        <!-- 写进模板,要替换的占位符的,filtered="true"-->
        <fileSet encoding="UTF-8" filtered="true">
            <directory></directory>
            <includes>
                <include>Dockerfile</include>
                <include>README.md</include>
            </includes>
        </fileSet>
    </fileSets>

每一个module下面如果有默认不识别的文件也要单独配置:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

去替换文件中的内容:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

注意检查文件,没有遗漏之后可以安装脚手架了,上面示例只是替换了一些常用文件,并没有替换所有,根据自己需求,替换所有需要编辑的文件。
进入target\generated-sources\archetype下,执行 mvn install

注:如果有自定义参数,需要在test/resources/projects/archetype.properties里配置自定义参数

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

执行成功后,在我们本地的maven仓库里会有一个archetype-catalog.xml文件

打开这个文件就能看到已经安装的脚手架信息:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

2 使用脚手架

2.1 命令

在工作区里执行:mvn archetype:generate -DappName=abc -DappNameCap=Abc

其中-D后面接的时自定义参数,也可以接默认参数,如-DgroupId

如果你安装过多个脚手架,会提示一个脚手架列表,选择脚手架编号:

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

会提示我们让我们输入各项参数,

确认按Y或者回车;

输入其他字母,重新输入参数;

按ctrl+c终止创建工程

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

2.2 idea

或者直接用idea

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

旧版

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

2.3 Eclipse

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

项目就创建好了

Maven自定义脚手架(多module模块)+自定义参数,maven,maven,java,脚手架

删除脚手架只要删除archetype-catalog.xml对应的节点就可以了文章来源地址https://www.toymoban.com/news/detail-653918.html

到了这里,关于Maven自定义脚手架(多module模块)+自定义参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发

    自己亲自实践: mac安装webpack 前提:已经安装node.js,可以参考 https://blog.csdn.net/ZHOU_VIP/article/details/128807814?spm=1001.2014.3001.5501 webpack 安装 首先确认一下是否已经安装: webpack -v 如果提示  command not found: webpack ,则表示未安装。 在Mac OS上安装webpack,需要先安装Node.js和npm。建议

    2024年02月11日
    浏览(51)
  • 关于 Error: Cannot find module ‘webpack/lib/RuleSet‘ 的详细解决方法(亲测有效)- 以及删除脚手架的方法

          对于出现的这个错误,之前我也尝试了网上的多种解决方案,最终经过测试后,是通过将原来的 @vue/cli  版本降级到 4.5.15 版本,最后再重新安装 node_modules 包 才得以解决。      下面是我将介绍怎么安装 4.5.15 版本的脚手架等。 (1)首先需要卸载全局安装的 @vu

    2024年02月08日
    浏览(46)
  • 【Openapi-ui+Knife】springdoc-openapi-ui 整合 knife,多模块分组,脚手架

     pom文件: yum文件: swagger配置文件 访问swagger-ui: 访问doc.html: http://localhost:18080/doc.html

    2024年02月04日
    浏览(42)
  • 三、创建脚手架和脚手架分析

    1、安装node.js **下载地址:**https://nodejs.org/zh-cn/ 界面展示 2、检查node.js版本 查看版本的两种方式 node -v node -version 出现版本号则说明安装成功(最新的以官网为准) 3、为了提高我们的效率,可以使用淘宝的镜像源 输入: npm install -g cnpm --registry=https://registry.npm.taobao.org 即可安

    2024年02月22日
    浏览(51)
  • Webpack项目学习:Vue-cli(脚手架)-优化配置 -ui库element-plus+减小打包体积 -按需加载+自定义主题+优化

    安装 全部引入,在入口文件main.js  启动:npm start  按需引入 需要插件快速开始 | Element Plus (gitee.io)     更改默认配置 主题 | Element Plus (gitee.io)    如果有模块没有安装 ,安装一下即可 优化 关闭性能分析 文件单独打包 做缓存-

    2024年02月08日
    浏览(69)
  • win系统将脚手架的软链接指向本地脚手架

    先了解一下脚手架研发、发布、安装、调试发大致流程: 本地研发,具体研发过程略 当前目录下登录npm npm login 发布脚手架 npm publish 安装脚手架 npm i -g xxxx(win系统会在系统盘的nodejs文件夹下自动添加脚手架执行命令和执行文件) 执行脚手架命令,没问题的话说明整个流程

    2024年02月08日
    浏览(51)
  • 脚手架开发流程详解

    创建npm项目 创建脚手架入口文件,最上方添加 配置package.json,添加bin属性 编写脚手架代码 将脚手架发布到npm 安装脚手架 使用脚手架 分包:将复杂的系统拆分成若干个模块 命令注册: 参数解析 options全称:–version、–help options简写:-V、-h 带params的options: --path /Users/sam/D

    2024年02月07日
    浏览(45)
  • 设计自己的脚手架

    前言 ​ 在工程中,不仅是软件工程,在建筑行业,我们也经常能看到脚手架的概念。脚手架(又称为 CLI ,全称 command-line interface ),我理解是一种快速构建项目的工具,它主要提供了项目的基础结构和一些常用的配置,避免了从头开始搭建项目的繁琐工作。通过使用脚手架

    2024年02月16日
    浏览(41)
  • React 脚手架

    React 脚手架(React boilerplate)是一种预先设置好的、可以快速启动 React 项目的工具。脚手架已经包含了 React、Webpack、Babel、ESLint、Jest 等一些常用的工具和库,并已经配置好了这些工具的参数,可以直接使用和自定义修改。使用 React 脚手架可以大大加快项目的启动和开发,同

    2024年02月13日
    浏览(51)
  • 使用Vue脚手架

    (193条消息) 第 3 章 使用 Vue 脚手架_qq_40832034的博客-CSDN博客 说明 1.Vue脚手架是Vue官方提供的标准化开发工具(开发平台) 2.最新的版本是4.x 3.文档Vue CLI脚手架(命令行接口) 具体步骤 1.如果下载缓慢请配置npm淘宝镜像 npm config set registry http://registry.npm.taobao.org 2.全局安装 @v

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包