使用Maven Archetype自定义工程模板

生成模板

选择一个maven项目作为模板,进入项目根目录
执行:mvn archetype:create-from-project,target/generated-sources/archetype就是我们要的项目了

项目中有些地方需要自己手工替换成变量,工具并没有那么智能。

1)不用抽取变量的地方被写成了变量

import ${package}.dao.po.User;   // 这里的com.free,我们希望替换成变量${pacakge}
import ${package}.log.core.Logger;  // 这里的com.free,是依赖jar包里面的类,不能替换${pacakge}
import com.free.log.core.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

2)该替抽取成变量的地方没有写成常量

#!/bin/bash
export JAVA_HOME=/usr/bin/hadoop/software/java8
export APP_NAME=demo-api   # 这里的demo-api我们希望替换成module的名称${rootArtifactId}
export APP_MAIN_CLASS=${package}.${rootArtifactId}.Application

模板命名

修改target/generated-sources/archetype/archetype/pom.xml

  <groupId>test</groupId>
  <artifactId>archetype-template-generator-archetype</artifactId>
  <version>1.0-SNAPSHOT</version>

然后执行:mvn -Dmaven.test.skip=true clean install,它会在本地仓库的根目录下生成一个archetype-catalog.xml文件

发布模板

pom.xml中添加发布配置,发布到自己的私服。如果模板只自己用,省略此步骤。

<!-- 发布配置 -->
<distributionManagement>
   <repository>
      <id>releases</id>
      <name>Local Nexus Repository</name>
      <url>http://ip/nexus/content/repositories/releases/</url>
   </repository>
   <snapshotRepository>
      <id>snapshots</id>
      <name>Local Nexus Repository</name>
      <uniqueVersion>false</uniqueVersion>
      <url>http://ip/nexus/content/repositories/snapshots/</url>
   </snapshotRepository>
</distributionManagement>

如果步骤3没有生成catalog文件,eclipse中是搜索不到模板的,可以自己创建catalog.xml文件,放到本地仓库的根目录。

<archetype-catalog
xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd">
   <archetypes>
      <archetype>
         <groupId>test</groupId>
         <artifactId>archetype-template-generator-archetypee</artifactId>
         <version>0.0.1-SNAPSHOT</version>
      </archetype>
   </archetypes>
</archetype-catalog>

IDEA中添加模板

1)点击File - New - Project - Maven,勾选Create from archetype
点击Add Archetype,输入我们提供的模板信息,具体如下:

<dependency>
 <groupId>test</groupId>
 <artifactId>archetype-template-generator-archetypee</artifactId>
 <version>0.0.1-SNAPSHOT</version>
</dependency>

在这里插入图片描述
2)使用时,选中archetype-template-generator-archetypee模板,Next即可

自定义包名

生成的模板工程默认会使用groupId当做包名,所以如果想自定义包名,有两种途径:

1)使用命令行生成项目

mvn archetype:generate
-DgroupId=com.free
-DartifactId=工程名称
-Dversion=版本号
-Dpackage=包名
-DarchetypeGroupId=test
-DarchetypeArtifactId=archetype-template-generator-archetypee
-DarchetypeVersion=0.0.1-SNAPSHOT
-DinteractiveMode=false

2)IntelliJ Idea生成工程时没有package的输入框,如果想根据module名拼接包名,可以改造模板工程结构如下:
在这里插入图片描述
pacageInPathFormat:默认包名全路径
rootArtifactId:module名称

发布了36 篇原创文章 · 获赞 23 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Cmainlove/article/details/88897660