面对Maven自定义archtype的问题

时间:2018-04-19 16:18:31

标签: java maven spring-boot maven-archetype

我正在尝试生成自定义maven archtype,我正在尝试下面的示例来生成自定义maven spring boot archtype:

Custom Maven Archtype

如果我尝试运行下面的maven generate命令 - 效果很好

mvn archetype:generate \
     -DarchetypeGroupId=com.romeh.spring-boot-archetypes \
     -DarchetypeArtifactId=spring-boot-quickstart \
     -DarchetypeVersion=1.0.0 \
     -DgroupId=com.test \
     -DartifactId=sampleapp \
     -Dversion=1.0.0-SNAPSHOT \
     -DinteractiveMode=false

但是如果我用自定义名称更改组ID,它就会失败 例如,如果我将 -DarchetypeGroupId = com.romeh.spring-boot-archetypes 更改为 -DarchetypeGroupId = com。 test .spring- boot-archetypes

我收到以下错误消息 - 如果我更改了组ID。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:26 min
[INFO] Finished at: 2018-04-19T11:45:36-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project spring-boot-quickstart: The desired archetype does not exist (com.test.spring-boot-archetypes:spring-boot-quickstart:1.0.0) -> [Help 1]

请注意 - 在执行此命令之前,我已经在pom.xml和archetype-catalog.xml中更改了组ID。

请你帮我解决这个问题 - 不知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:0)

你不应该这样做。这些属性

 -DarchetypeGroupId=com.romeh.spring-boot-archetypes  
 -DarchetypeArtifactId=spring-boot-quickstart  
 -DarchetypeVersion=1.0.0  

标识原型;就像你有一些JAR并且想要将它添加到项目中一样,你需要提供groupIdartifactIdversion

同样的方法用于原型! Archetypes打包在JAR中,它们由描述原型内容的原型元数据组成。

那些属性说Maven应该运行什么样的原型(比如什么JAR)来生成你的app骨架。如果你改变它们 - Maven不会在存储库中找到合适的JAR。

相反,你应该修改:

-DgroupId=com.test 
-DartifactId=sampleapp 
-Dversion=1.0.0-SNAPSHOT 

这些将是由该原型生成的项目属性。