公司每次做新项目都要去搭建一套新的架子,形成新的服务。其实大部分的架子都差不多,但是每次都要重新建包,引入pom依赖,配置数据源,修改日志文件,配置文件修改,类目录结构修改等等。每次步骤都差不多,主要是耗时,有时候甚至出个问题都要解决半天。那么有没有一种方式可以从这里面解放出来? 有,就是maven的脚手架。
以我自己搭建的一套服务为准,现在把这套搭建好的架子使用脚手架的方式重新生成。先看下当前的目录
这个是当前大概的目录结构,我以这个为基准,在搭建一套新的服务。就是变下名称,以下是步骤:
1)在当前目录下 使用maven命令:
mvn clean archetype:create-from-project -Darchetype.properties
主要是使用archetype生成源码。注意一定要是在指定的target目录下,注意一定要是在指定的target目录下,
注意一定要是在指定的target目录下,重要事情说3遍。以我的为例:
/Users/fan/workspace/summary/target/generated-sources/archetype
3) 第二步执行成功后, 使用命令.
mvn clean install
主要是使用成archetype生成jar包。注意 当前操作仍然是在target目录下。
注意 当前操作仍然是在target目录下。
注意 当前操作仍然是在target目录下。 以我的为例
/Users/fan/workspace/summary/target/generated-sources/archetype
以上三步都成功后,就可以使用命令行生成项目了
4)以这个项目为例,打开一个新的文件,使用命令行:
mvn archetype:generate -DarchetypeGroupId=com.sq.summary
-DarchetypeArtifactId=summary-archetype
-DarchetypeVersion=0.0.1-SNAPSHOT
-Ddatabase=olympic-winter
-DgroupId=com.sq.summary
-DartifactId=summary-archetype
-Dversion=0.0.1-SNAPSHOT
-DapplicationName=summaryTest
-Dpackage=com.sq.summary
----------------------------------------------------------------
需要配置的参数说明
-DarchetypeGroupId=com.sq (可以看target/generated-sources/archetype/的pom文件的groupId)
-DarchetypeArtifactId=summary-archetype (可以看target/generated-sources/archetype/的pom文件的artifactId)
-DarchetypeVersion=1.0-SNAPSHOT (可以看target/generated-sources/archetype/的pom文件的version)
-DartifactId=summary-archetype(新的artifactId)
-Dversion=0.0.1-SNAPSHOT(新的version)
-DapplicationName=summaryTest(新的服务名称)
-Dpackage=com.sq.summary(新的包名)
生成完成打开查看和现在的目录一模一样,只是包名、version等改为了我们这次新命名的了。
Invoker process ended with result different than 0!
Execution repackage of goal org.springframework.boot:spring-boot-maven-plugi
只有子模块需要生成可执行JAR包,其他几个模块是不需要可执行的,spring boot 默认帮我加入了如下build策略。不需要的pom.xml里面去掉这个就行了。我的只有对外提供服务的api有这个,其他的都不需要。
参考:https://blog.csdn.net/qq_41264674/article/details/106539584
3)执行 第三步 mvn clean install 时候报错:
[ERROR] Errors:
[ERROR] SqSummaryServiceApplicationTests » IllegalState Unable to find a @SpringBootCo...
原因:单元测试类的问题,我是删除了不需要的单元测试类。参考:
https://blog.csdn.net/csdn_am/article/details/79757097
4)jar包生成成功后,执行命令
mvn archetype:generate -DarchetypeGroupId=com.sq.summary -DarchetypeArtifactId=summary -DarchetypeVersion=0.0.1-SNAPSHOT -Ddatabase=olympic-winter -DgroupId=com.sq.summary -DartifactId=summary -Dversion=0.0.1-SNAPSHOT -DapplicationName=summaryTest -Dpackage=com.sq.summary
报错: The desired archetype does not exist
原因:使用 mvn的archetype生成的jar包的默认artifactId带有后缀 -archetype,但是命令行里面没有带 需要带上才行:
mvn archetype:generate -DarchetypeGroupId=com.sq.summary -DarchetypeArtifactId=summary-archetype -DarchetypeVersion=0.0.1-SNAPSHOT -Ddatabase=olympic-winter -DgroupId=com.sq.summary -DartifactId=summary-archetype -Dversion=0.0.1-SNAPSHOT -DapplicationName=summaryTest -Dpackage=com.sq.summary
遇到的问题大概有这些。记录下。