IDEA 使用 archetype(原型/模板/骨架)创建 Maven 项目时,
最后提示:
No archetype found in remote catalog. Defaulting to internal catalog
Archetype not found in any catalog. Falling back to central repository.
Add a repository with id ‘archetype’ in your settings.xml if archetype’s repository is elsewhere.
原因:
找不到远程的 archetype-catalog.xml,在内部的 archetype 目录册中也找不到你要的 archetype,建议你在 settings.xml 中配置 archetype 仓库。
实际上在 http://repo1.maven.org/maven2/ 仓库存在 archetype-catalog.xml 文件,下载地址:https://repo1.maven.org/maven2/archetype-catalog.xml。
但是我在 settings.xml 声明这个远程仓库后,
<mirror><id>repo1</id><name>Human Readable Name for this Mirror.</name><url>http://repo1.maven.org/maven2/</url><mirrorOf>central</mirrorOf>
</mirror>
在命令终端输入命令 mvn archetype:generate 同样会提示下面的警告信息:
[WARNING] No archetype found in remote catalog. Defaulting to internal catalog
我没有理解 No archetype found in remote catalog 这段文字的含义。
临时解决:
我点击上述的 archetype-catalog.xml 下载链接,下载了 archetype-catalog.xml 文件。
将 archetype-catalog.xml 文件移动到 ~/.m2/repository 目录下(本地仓库的根目录),然后 IDEA 中配置下面的参数:
然后 IDEA 使用 archetype 创建 Maven 项目,就没有上面的提示了。
其实上面的做法只是屏蔽了访问远程仓库的 catalog 而已,指定 IDEA 通过 archetype 创建项目的时候,只读取本地的 catalog。
默认是先查询远程的,再查询本地的,再查询内置的。
命令行下,你可以使用参数 archetypeCatalog=local,表示只读取本地的 catalog。参数值有三个:remote、local、internal。
[~/documents/ideaprojects]$ mvn archetype:generate -DarchetypeCatalog=local
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------< org.apache.maven:standalone-pom >-------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.2.1:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.1:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.1:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -> am.ik.archetype:elm-spring-boot-blank-archetype (Blank multi project for Spring Boot + Elm)
2: local -> am.ik.archetype:graalvm-blank-archetype (Blank project for GraalVM)
3: local -> am.ik.archetype:graalvm-springmvc-blank-archetype (Blank project for GraalVM + Spring MVC)
4: local -> am.ik.archetype:graalvm-springwebflux-blank-archetype (Blank project for GraalVM + Spring MVC)
5: local -> am.ik.archetype:maven-reactjs-blank-archetype (Blank Project for React.js)
...
执行上述的命令后,你在命令终端可以看到所有可用的 archetype 列表,你需要输入对应的编号,然后按下回车键,那么 Maven 就会按你选择的 archetype 在当前目录下生成项目的整体结构。如果你需要使用 IDE 来开发项目,那么你需要导入该项目。