自定义archetype
2019-01-12 本文已影响9人
王勇1024
为什么要自定义archetype
Maven也内置了很多的archetype供用户选择使用什么样的骨架去创建一个项目,比如:
maven-archetype-webapp
maven-archetype-quickstart
在创建一个maven项目的时候会列出很多archetype供选择,Maven默认的archetype是maven-archetype-webapp。
但是在一个团队做开发的过程中,可能仅仅依靠Maven预先提供的archetyp可能是不够的,团队之间协作有自己的定义方式,每个人的结构定义风格也不尽相同,在这样的背景下我们有必要去定义一个统一的代码骨架供团队使用,这样做的好处还有在新人加入团队的初期能够快速的理解项目。
自定义archetype
进入项目根目录,执行下面的命令:
mvn archetype:create-from-project
此时会在该项目的target目录下发现如下文件:
目录结构
进入到archetype目录下,也就是到达我们项目的根目录执行:
cd target/generated-sources/archetype/
mvn install
IDEA使用自定义archetype生成项目
File>New>Project
使用自定义archetype生成项目设置GroupId、ArtifactId和Version
项目设置成功生成项目
成功生成项目但我发现build.sh、docker/run.sh文件中的${artifactId}变量并没有被替换,原因是 <fileSet>没有添加 filtered="true" 的设置,filtered="true"标识下面提到的${}是否要进行替换
<fileSet encoding="UTF-8">
<directory>docker</directory>
<includes>
<include>**/*.</include>
<include>**/*.sh</include>
</includes>
</fileSet>
<fileSet encoding="UTF-8">
<directory></directory>
<includes>
<include>build.sh</include>
<include>.gitignore</include>
</includes>
</fileSet>
</fileSets>
修改后重新执行 mvn install,再重新生成项目即可,项目启动成功:
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.1.RELEASE)
2019-01-12 12:22:31.199 [main] INFO com.yidian.data.Application - Starting Application on admindeMacBook-Pro.local with PID 55375 (/Users/admin/workspace/demo/target/classes started by admin in /Users/admin/workspace/demo)
2019-01-12 12:22:31.204 [main] INFO com.yidian.data.Application - The following profiles are active: dev