2015-01-02 2 views
5

Если кто-то может помочь мне здесь, это сэкономит мне много времени.maven - использование локального источника вместо внешней зависимости

Я поддерживаю библиотеку с открытым исходным кодом, которая выталкивается в репозиторий соната. Я вношу изменения в эту библиотеку несколько раз в день и выталкиваю ее в сборку 1.0_snapshot, используя mvn deploy. Назовем это project1

Я постоянно работаю в другом проекте, который использует эту библиотеку, назовем ее project2.

Прямо сейчас, когда я вносить изменения проекта 1 или 2, я сначала нужно построить и развернуть проект 1 к репо, а затем построить проект 2 так он загружает новую копию project1.jar

Проект2 имеет Project1 как зависимость в pom.xml:

<dependency> 
      <groupId>com.group</groupId> 
      <artifactId>project1</artifactId> 
      <version>1.0-SNAPSHOT</version> 

</dependency> 

для того, чтобы построить в пути, где все мои изменения могут быть проверены, я должен сделать что-то вроде этого:

mvn -f ./project1/pom.xml clean deploy 
mvn -U -f ./project2/pom.xml clean package 

это загружает мой project1.jar в sonatype, затем project2 загружает новый снимок и строит его.

Это упрощенная картина того, что я делаю в более крупном масштабе, где мои компиляторы занимают 5 минут и загружаются.

Вопрос: Каков надлежащий способ использования maven, чтобы он знал, использовать источник проекта1 в зависимости от проекта 2?

ответ

5

IDE:

  • установить m2e в затмении
  • импортировать оба проекта в рабочую область
  • от потребительского проекта (щелкните правой кнопкой мыши> Maven> включить разрешение рабочего пространства)

это поставит классы project2 в classpath от его целевых/классов вместо фактической баночки

родной прямой Maven:

  • You can create a maven project tree, если это два с открытым исходным кодом проекта происходит через тот же сборки цикла, она должна иметь один уже, если они не связаны, но относящиеся к вашей USECASE, то вы можете временно создать Maven дерево на вершине из этих двух проектов и построить верхнего родителя он будет строить снизу вверх одной командой

он найдет листовой проект, построит его в кеше maven и теперь, строя проект, он будет отсылать его из кэша maven поэтому нет необходимости разворачивать до соната

+1

спасибо за помощь, решение мне нужно должно быть независимым от IDE - мне это нужно, чтобы построить быстрее в командной строке. – bsautner

+0

@bsautner обновленный ответ –

+0

спасибо - я буду читать на деревьях maven, это должно быть то, что мне не хватает – bsautner

3

Вы также можете указать PROJECT2 построить с помощью автономного режима:

mvn -o package 

Затем вы уронили часть загрузки в project1 сборки на удаленный репозиторий.

Проверьте следующую ссылку: Intro to repositories и How do I configure Maven for offline development?

+0

, когда я вношу изменения в project1 и компилирую его с пакетом mvn -o, а затем попробуйте использовать это изменение в проекте2 - сборка завершится неудачно. Это похоже на правильное решение, хотя я хочу, чтобы сборки использовали мое местное репо. Я проведу ссылки, которые вы разместили. благодаря – bsautner

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