Maven - archetypeCatalog is not supported anymore 及 The desired archetype does not exist

女爷i 2023-06-23 10:56 109阅读 0赞

Maven - archetypeCatalog is not supported anymore 及 The desired archetype does not exist

概述

今天在参考Flink官网使用Maven构建Flink工程:

  1. mvn archetype:generate \
  2. -DarchetypeGroupId=org.apache.flink \
  3. -DarchetypeArtifactId=flink-walkthrough-datastream-scala \
  4. -DarchetypeCatalog=https://repository.apache.org/content/repositories/snapshots/ \
  5. -DarchetypeVersion=1.11-SNAPSHOT \
  6. -DgroupId=frauddetection \
  7. -DartifactId=frauddetection \
  8. -Dversion=0.1 \
  9. -Dpackage=spendreport \
  10. -DinteractiveMode=false

报错类似如下:
archetypeCatalog is not supported anymore

主要是因为Maven3.0以后,不能直接使用-DarchetypeCatalog了。

如果直接去掉-DarchetypeCatalog,而不做其他更改,会报错类似如下:
Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (org.apache.flink:flink-walkthrough-datastream-scala:1.11-SNAPSHOT) -> [Help 1]

问题解决

参考archetype-repository,在mvn命令默认使用的settings.xml文件(这个文件路径可以通过在执行mvn命令时加入-x选项观察Reading global settings from xxx/settings.xmlReading user settings from yyy/settings.xml)中加入如下内容:

  1. <profiles>
  2. <profile>
  3. <id>archetype</id>
  4. <repositories>
  5. <repository>
  6. <id>archetype</id><!-- id expected by maven-archetype-plugin to avoid fetching from everywhere -->
  7. <url>https://repository.apache.org/content/repositories/snapshots</url>
  8. <releases>
  9. <enabled>true</enabled>
  10. <checksumPolicy>fail</checksumPolicy>
  11. </releases>
  12. <snapshots>
  13. <enabled>true</enabled>
  14. <checksumPolicy>warn</checksumPolicy>
  15. </snapshots>
  16. </repository>
  17. </repositories>
  18. </profile>
  19. </profiles>
  20. <activeProfiles>
  21. <activeProfile>archetype</activeProfile>
  22. </activeProfiles>

再使用如下命令可成功构建名为flink-demo2的Flink工程:

  1. mvn archetype:generate \
  2. -DarchetypeGroupId=org.apache.flink \
  3. -DarchetypeArtifactId=flink-walkthrough-datastream-scala \
  4. -DarchetypeVersion=1.11-SNAPSHOT \
  5. -DgroupId=flink-demo3 \
  6. -DartifactId=flink-demo3-test \
  7. -Dversion=0.1 \
  8. -Dpackage=spendreport \
  9. -DinteractiveMode=false

如果很慢的话,可以把http://repo1.maven.org/maven2/archetype-catalog.xml下载到本地仓库根目录,比如~/.m2下,并在执行mvn archetype命令时加上-DarchetypeCatalog=internal

参考文档

  • Flink官网
  • archetype-repository
  • 让 maven 下载archetype-catalog.xml 快一点 附下载链接
  • maven指定-DarchetypeCatalog=local,但是提示找不到any catalog

好文推荐

  • Maven 三种archetype说明
  • maven自定义archetype
  • Flink快速上手之Scala API使用

发表评论

表情:
评论列表 (有 0 条评论,109人围观)

还没有评论,来说两句吧...

相关阅读