创建并使用maven archetype的随笔

时间:2023-01-25 15:48:39

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资源,这些资源就来自于原项目
创建并使用maven archetype的随笔

 

 
创建并使用maven archetype的随笔
  • 如果要调整骨架中生成的具体项目文件,需要更改对应的文件
示例:/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项目
创建并使用maven archetype的随笔
创建并使用maven archetype的随笔

创建并使用maven archetype的随笔

 


创建并使用maven archetype的随笔
创建并使用maven archetype的随笔
创建并使用maven archetype的随笔
 
本地安装的骨架,在Default Local应有显示,远程安装的骨架,请先进入configure配置远程来源后找到对应骨架
创建并使用maven archetype的随笔

 

创建并使用maven archetype的随笔
输入必须的变量后,点击finish就能新建完成
创建并使用maven archetype的随笔
  创建并使用maven archetype的随笔