2016-02-12 2 views
2

Я хочу, чтобы у меня был возможность начать проект с архетипа Maven, находясь в автономном режиме. Но я не могу найти четких инструкций о том, как кэшировать архетипы Maven для автономного использования. У кого-нибудь есть совет?Оффлайн Кэширование архетипов Maven

ответ

3

Архетип Maven является артефактом, и как таковой он будет автоматически кэшироваться Maven при его первом использовании. Позже обычаи всегда будут запускать извлеченные артефакты сначала (из локального кеша). Мы также можем заставить Maven использовать кеш (автономный режим, как описано ниже).

Таким образом, вы можете просто вызвать соответствующие архетипы один раз (т. Е. Для фиктивного проекта) и отключить их для дальнейших вызовов.

Если вы действительно хотите его кешировать заранее, вы можете использовать Maven Dependency Plugin и его цель get, чтобы добавить к вашему местному кэшу Maven артефакт архетипа.

Например, давайте кэшировать Maven Quickstart Archetype как следующее:

mvn dependency:get -DgroupId=org.apache.maven.archetypes \ 
    -DartifactId=maven-archetype-quickstart -Dversion=1.0 

Это значит хранить на локальном кэше Maven maven-archetype-quickstart-1.0.jar артефакт.

Если вы не знаете, где ваш локальный кэш Maven, вы можете использовать Maven Help Plugin и запустить:

mvn help:evaluate -Dexpression=settings.localRepository 

В рамках подробного вывода, вы получите полный путь к локальному кэшу 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 будет работать в автономном режиме исполнения и использовать его локальный кеш.


Обратите внимание, что вы можете также использовать опцию archetypeCatalog при вызове archetype:generate и установить его на local только проверить локальный каталог, а принудительное исполнение в автономном режиме (-o) будет лучше удовлетворить ваши потребности (форсирует местный каталог И локальные кэшированные архетипы).

1

Механизм архетипа Maven опирается на каталоги. Каталоги - это файлы XML, которые maven проверяет, какие архетипы доступны. Как Maven: The complete reference состояния в Chapter 12.4:

каталог архетип является XML-файл, который плагин Maven архетип может справиться найти архетипы в хранилище.

Вы можете создать каталог ваших кешированных архетипов (уже загруженных), сканировав локальный репозиторий для доступных архетипов. Это активируя crawl mojo:

mvn archetype:crawl

Это создаст файл XML в ~/.m2/repository/archetype-catalog.xml. (Вы можете указать путь путем добавления -Dcatalog=<filename>)

После этого вы можете использовать команду

mvn archetype:generate -DarchetypeCatalog=file://<fullpath of catalog file> 

например

mvn archetype:generate -DarchetypeCatalog=file:///home/username/.m2/repository/archetype-catalog.xml 

для создания проекта с использованием только что созданного каталога. Он будет только покажет доступные (кэшированные) архетипы вам, и они могут использоваться в автономном режиме.

Добавление:

Я думаю, вы будете использовать МВН архетип: генерировать чаще, так что вы можете захотеть, чтобы минимизировать ввод с помощью этого:

1) Создание каталога XML архетип под .m2/archetype-catalog.xml -

mvn archetype:crawl -Dcatalog=/home/<username>/.m2/archetype-catalog.xml 

2) Использование MVN архетип: генерируют -DarchetypeCatalog = локальный (этот доступ .m2/archetype-catalog.xml)

mvn archetype:generate -DarchetypeCatalog=local 

Рекомендуется использовать это после онлайн-загрузки, чтобы загрузить все необходимые плагины. Например, Archetype Plugin и потенциально другие.

+1

Но каталог предоставит только то, что уже кэшировано, в то время как вопрос был больше о том, как кешировать предшественники архетипа. Более того, вам действительно не нужно воссоздавать локальный каталог, если архетипы уже кэшированы. Во всяком случае, стоит упомянуть об этом. –

Смежные вопросы