生成模板
选择一个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名称