maven骨架archetype的意义在于一些项目的基础项:如引入的maven组件,例如eureka,ribben等,不希望每次新建项目都重复做一遍,还有例如公司规范的log格式,单元测试工具等,在新建项目的时候,希望可以将这些自定义的东西一键生成。这里就简单的讲解一下maven管理的java Spring Boot的项目,如何建立骨架并使用。

建立样例项目

参见Spring boot的官网,然后可以引入一些需要的组件,并做一些必要的修改。

生成项目骨架

  • 样例项目的根目录,pom文件引入
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.2</version>
<configuration>
<addDefaultExcludes>false</addDefaultExcludes>
</configuration>
</plugin>
  • 使用命令行,在项目根目录调用:mvn archetype:create-from-project

  • 生成target目录,target目录下:target/generated-sources/archetype就是真正的骨架项目,有对应的pom文件,src下有生成骨架相关的resource资源,这些资源就来自于原项目

  • 如果要调整骨架中生成的具体项目文件,需要更改对应的文件
示例:/user-user/user-user-server/pom.xml
<dependency>
<groupId>com.hzphfin.user.user</groupId>
<artifactId>user-user-api</artifactId>
<version>${project.version}</version>
</dependency>
 
<dependency>
<groupId>com.hzphfin.user.user</groupId>
<artifactId>user-user-service</artifactId>
<version>${project.version}</version>
</dependency>
在骨架中被手工修改为:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-api</artifactId>
<version>${project.version}</version>
</dependency>
 
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${rootArtifactId}-service</artifactId>
<version>${project.version}</version>
</dependency>
  • 如对目录及原忽略一些文件,要修改/target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml
示例:modules相关目录修改如下
<modules>
<module id="${rootArtifactId}-api" dir="__rootArtifactId__-api" name="${rootArtifactId}-api">
</module>
<module id="${rootArtifactId}-server" dir="__rootArtifactId__-server" name="${rootArtifactId}-server">
</module>
<module id="${rootArtifactId}-service" dir="__rootArtifactId__-service" name="${rootArtifactId}-service">
</module>
<module id="${rootArtifactId}-dao" dir="__rootArtifactId__-dao" name="${rootArtifactId}-dao">
</module>
</modules>
 
  • maven archetype默认会有以下一些build-in的变量,用这些变量替换文件中的原有的值
${rootArtifactId} controller
${artifactId} controller-(api,dao,server,service)
${package}  
${packageInPathFormat}  
${groupId} com.hzphfin.app
${version} 0.0.1-SNAPSHOT
示例:
<groupId>com.hzphfin.app</groupId>
<artifactId>controller</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
变为:
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<packaging>pom</packaging>
 
  • 如果是目录名更改时使用变量,使用类似这样的结构:__artifactId__
  • 如果要自定义一些替换的变量,需在/target/generated-sources/archetype/src/main/resources/META-INF/maven/archetype-metadata.xml加入如下的key-value
<requiredProperties>
<requiredProperty key="groupId"/>
<requiredProperty key="artifactId"/>
<requiredProperty key="version">
  <defaultValue>1.0.0</defaultValue>
</requiredProperty>
</requiredProperties>
 

部署项目骨架

以上已完成骨架的创建,接下来说骨架的部署,可以分本地和远程部署
命令行切换到骨架的根目录:/target/generated-sources/archetype
执行:mvn install 将骨架项目安装在本地
执行:mvn deploy 将骨架项目上传到nexus服务器(具体上传配置及设置骨架项目pom文件中加入distributionManagement请参见其他文档)
 

使用项目骨架生成项目

以下讲解完成后,如何在IDE新建项目:
安装后,在eclipse中新建maven项目

 
本地安装的骨架,在Default Local应有显示,远程安装的骨架,请先进入configure配置远程来源后找到对应骨架

输入必须的变量后,点击finish就能新建完成
 

创建并使用maven archetype的随笔的更多相关文章

  1. [liusy.api-SMJ]-创建工程范例 MAVEN archetype 学习阶段(一)

    由于这个架构需要好多不同能力的工程,为了创建方便减少冗余,创建工程范例尤为重要 学习阶段: 参考资料 http://maven.apache.org/archetype/maven-archetype ...

  2. Jersey 2.x 从Maven Archetype 创建一个新项目

    创建 Jersey 工程需要使用 Apache 的 Maven 软件工程和管理工具.所有的Jersey产品模块都可以在 Maven中央库 中找到.这样的话 Jersey 可以非常容易和其他基于 Mav ...

  3. 使用Maven命令行快速创建项目骨架(archetype)

      > mvn archetype:generate 接下来就会输出一些列带索引变化的archetype项可供我们选择,然后提示我们选择一个编号,可以直接回车选择默认的编号(392),然后就跟着 ...

  4. Jersey入门一:从Maven Archetype创建jersey项目

    1.用Ctrl+空格调出Spotlight搜索,输入ter调出终端窗口  2.在终端窗口进入将创建jersey项目的目录:  3.输入如下命令,创建一个名为的simple-service项目: m ...

  5. 使用Vaadin的maven archetype创建一个空Vaadin项目

    所在公司要求使用这个臭屎粑粑一样的Vaadin,我也没办法.为了更好地开展工作,对得起老板发给我的工资,就算是臭屎粑粑,也要尽力给他玩儿出花样来. Vaadin针对Eclipse和Netbeans等I ...

  6. 使用Maven Archetype创建Java项目模板

    1.over view 简而言之,Archetype是一个Maven项目模板工具包.原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的.当我们试图提供一个提供生成Maven项目的一致方 ...

  7. 老大说新项目的结构和 xxx 项目一样就可以了,我 ……(使用 Maven Archetype 快速创建项目)

    前言 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了. 公众号:liuzhihangs,记录工作学习中的技术.开发及源码笔记:时不时分享一些生活中的见闻 ...

  8. maven archetype二三事

    maven plugin 创建maven archetype 骨架的plugin是 <plugin> <groupId>org.apache.maven.plugins< ...

  9. maven archetype生成自定义项目原型(模板)

    maven archetype可以将一个项目做成项目原型,之后只需要以此原型来创建项目,那么初始创建的项目便具有原型项目中的一切配置和代码.通俗讲就是一个项目模板. eclipse中那些快速生成mav ...

随机推荐

  1. 从MySQL slave system lock延迟说开去

    本文主要分析 sql thread中system lock出现的原因,但是笔者并明没有系统的学习过master-slave的代码,这也是2018年的一个目标,2018年我都排满了,悲剧.所以如果有错误 ...

  2. python爬虫_入门_翻页

    写出来的爬虫,肯定不能只在一个页面爬,只要要爬几个页面,甚至一个网站,这时候就需要用到翻页了 其实翻页很简单,还是这个页面http://bbs.fengniao.com/forum/10384633. ...

  3. Java 中File类的createNewFile()与createTempFile(), delete和deleteOnExit区别

    1. Java 中File类的createNewFile()与createTempFile()的区别 最近,在看代码时看到了一个方法, File.createTempFile() ,由此联想到File ...

  4. set集合综合案例

    案例01:生成0-10之间5个不相等的数 方法1:使用list集合实现 import random list01 = [] for i in range(100): num01 = random.ra ...

  5. Chrome 打印PDF技巧

    Chrome 打印PDF技巧 原文地址:https://github.com/zhongxia245/blog/issues/22 欢迎star 本教程,使用Mac电脑进行演示. 常规的Chrome打 ...

  6. js指定范围随机整数

    js获取指定范围内随机整数,例如 6-10 (m-n) 计算公式: Math.floor(Math.random()*(n-m))+m // 6-10随机数,用循环得出一组测试随机数 var str ...

  7. css3自定义滚动条背景透明

    .editor{ overflow:hidden; height:640px; padding:0 45px; border: 0 none; outline: none; } .editor::-w ...

  8. Spark项目之电商用户行为分析大数据平台之(四)离线数据采集

  9. 随手练——DFS小练

    1. 单词接龙 https://www.luogu.org/problemnew/show/P1019 题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头 ...

  10. Https 安全传输的原理

    序言 今天来聊一聊https 安全传输的原理. 在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖(怎么又是你?!), 还有一个是位于米国的Bill (怎么还是你?!). 这俩哥们隔着千山万水, ...