Maven - archetypeCatalog is not supported anymore 及 The desired archetype does not exist
Maven - archetypeCatalog is not supported anymore 及 The desired archetype does not exist
概述
今天在参考Flink官网使用Maven构建Flink工程:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-walkthrough-datastream-scala \
-DarchetypeCatalog=https://repository.apache.org/content/repositories/snapshots/ \
-DarchetypeVersion=1.11-SNAPSHOT \
-DgroupId=frauddetection \
-DartifactId=frauddetection \
-Dversion=0.1 \
-Dpackage=spendreport \
-DinteractiveMode=false
报错类似如下:archetypeCatalog is not supported anymore
主要是因为Maven3.0以后,不能直接使用-DarchetypeCatalog
了。
如果直接去掉-DarchetypeCatalog
,而不做其他更改,会报错类似如下:Failed to execute goal org.apache.maven.plugins
3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (org.apache.flink
1.11-SNAPSHOT) -> [Help 1]
问题解决
参考archetype-repository,在mvn
命令默认使用的settings.xml
文件(这个文件路径可以通过在执行mvn
命令时加入-x
选项观察Reading global settings from xxx/settings.xml
和Reading user settings from yyy/settings.xml
)中加入如下内容:
<profiles>
<profile>
<id>archetype</id>
<repositories>
<repository>
<id>archetype</id><!-- id expected by maven-archetype-plugin to avoid fetching from everywhere -->
<url>https://repository.apache.org/content/repositories/snapshots</url>
<releases>
<enabled>true</enabled>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>archetype</activeProfile>
</activeProfiles>
再使用如下命令可成功构建名为flink-demo2
的Flink工程:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.flink \
-DarchetypeArtifactId=flink-walkthrough-datastream-scala \
-DarchetypeVersion=1.11-SNAPSHOT \
-DgroupId=flink-demo3 \
-DartifactId=flink-demo3-test \
-Dversion=0.1 \
-Dpackage=spendreport \
-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使用
还没有评论,来说两句吧...