Maven原型的脱机缓存

Maven原型的脱机缓存,maven,caching,maven-archetype,Maven,Caching,Maven Archetype,我希望能够在离线时从Maven原型开始一个项目。但我找不到关于如何缓存Maven原型以供脱机使用的明确说明。有人有什么建议吗?Maven原型毕竟是一个工件,因此它将在第一次使用时由Maven自动缓存。以后的使用总是首先从本地缓存运行获取的工件。我们还可以强制Maven只使用缓存脱机模式,如下所述 因此,您可以只调用一次相关的原型,即对于一个虚拟项目,并让它们脱机以进行进一步的调用 如果您真的想预先缓存它,可以使用及其目标将原型工件添加到本地Maven缓存中 例如,让我们缓存以下内容: mvn d

我希望能够在离线时从Maven原型开始一个项目。但我找不到关于如何缓存Maven原型以供脱机使用的明确说明。有人有什么建议吗?

Maven原型毕竟是一个工件,因此它将在第一次使用时由Maven自动缓存。以后的使用总是首先从本地缓存运行获取的工件。我们还可以强制Maven只使用缓存脱机模式,如下所述

因此,您可以只调用一次相关的原型,即对于一个虚拟项目,并让它们脱机以进行进一步的调用

如果您真的想预先缓存它,可以使用及其目标将原型工件添加到本地Maven缓存中

例如,让我们缓存以下内容:

mvn dependency:get -DgroupId=org.apache.maven.archetypes \
   -DartifactId=maven-archetype-quickstart -Dversion=1.0
因此,它将在本地Maven缓存中存储Maven-archetype-quickstart-1.0.jar工件

如果您不知道本地Maven缓存在哪里,可以使用并运行:

作为详细输出的一部分,您将获得本地Maven缓存的完整路径

由于现在QuickStart原型在缓存中,我们可以使用-o标志脱机运行它,强制进行Maven调用

mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes \ 
  -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.0 \
  -DgroupId=com.sample -DartifactId=test -Dversion=1.0-SNAPSHOT -B -o
因此,Maven将运行离线执行,并且只使用其本地缓存


请注意,您也可以在调用archetype时使用该选项:generate并将其设置为local以仅检查本地目录,但是强制执行到脱机模式-o更适合您的需要强制本地目录和本地缓存的原型。

Maven的原型机制依赖于目录。目录是maven检查的XML文件,以查看哪些原型可用。 如中所述:

原型目录是一个XML文件,Maven原型插件可以参考该文件在存储库中查找原型

通过对本地存储库中的可用原型进行爬网,可以创建已下载的缓存原型的目录。这是通过调用:

mvn原型:爬行

这将在~/.m2/repository/archetype-catalog.XML中创建一个XML文件。 可以通过附加-Dcatalog来指定路径=

创建后,可以使用命令

mvn archetype:generate -DarchetypeCatalog=file://<fullpath of catalog file> 
使用新创建的目录生成项目。它将只向您显示可用的缓存原型,这些原型可以脱机使用

增编:

我想您将更经常地使用mvn原型:generate,因此您可能希望通过使用以下命令来最小化键入:

1在.m2/archetype-catalog.XML下生成XML原型目录-


一次在线使用它是一个好主意,以便下载所有必要的插件。例如,和可能的其他内容。

但是目录将只提供已经缓存的内容,而问题更多的是如何在缓存之前缓存原型。此外,如果已经缓存了原型,则实际上不需要重新创建本地目录。不管怎么说,提这件事很有道理。
mvn archetype:generate -DarchetypeCatalog=file://<fullpath of catalog file> 
mvn archetype:generate -DarchetypeCatalog=file:///home/username/.m2/repository/archetype-catalog.xml 
mvn archetype:crawl -Dcatalog=/home/<username>/.m2/archetype-catalog.xml
mvn archetype:generate -DarchetypeCatalog=local