2012-05-15 2 views
1

У меня проблема, у меня есть проект, который основан на системе, которая включает в себя модули. Эти модули представляют собой другие проекты maven и ссылаются на системный POM. Моя проблема заключается в том, что я совместно использую системный проект с одноклассником, и у нас есть разные модули.Включите зависимость Maven, только если она существует

Итак, есть ли способ сказать Maven, что я хочу включить модуль, указанный в моей POM, только если этот модуль существует? Я имею в виду, без сбоя компиляции.

Спасибо!

+2

Я думаю, вы можете объявить его необязательным. http://maven.apache.org/pom.html#Dependencies –

+0

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html –

ответ

1

Используйте функцию dependencyManagement, чтобы вытащить всю информацию о зависимостях в общий файл POM, упрощая ссылки в дочернем POM-файле.

0

Существует несколько решений, в зависимости от того, что вы можете сделать/чего хотите достичь.

Один из подходов заключается в установке сервера репозитория Maven в вашей компании (в локальной локальной сети или в локальной сети, которую вы и ваш коллега поделитесь). Создайте систему, а затем deploy модули на сервер.

В вашей сборке, вы можете добавить новый сервер, как это (documentation):

<project> 
    ... 
    <repositories> 
    <repository> 
     <id>my-internal-site</id> 
     <url>http://myserver/repo</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

Или вы можете скопировать и базовую систему и построить его на месте с mvn install. Это скопирует все артефакты в ваш локальный кеш.

Оттуда вы можете ссылаться на них как обычно. Вам не нужно включать все модули; просто те, которые вам действительно нужны. Таким образом, вы и ваш друг не должны использовать одни и те же зависимости.

1

Я предлагаю использовать profiles и активировать их по опции file/exists.