Избегайте ссылки на родительский pom в многомодульном проекте maven

Мой многомодульный проект состоит из общедоступных (с открытым исходным кодом) и частных (нераскрытых) модулей. Мне нужно создать файл pom master-all со ссылкой на master-public и master-private, чтобы некоторые плагины и команды знали обо всех проектах (например, cobertura). Таким образом, master-all должен быть закрытым, поскольку он ссылается на master-private.

Проблема в том, что master-public должен ссылаться на свой родительский master-all, который является закрытым, поэтому пользователи общедоступных модулей не смогут их создавать:

<groupId>group</groupId>
<artifactId>master-public</artifactId>
<parent>
    <groupId>group</groupId>
    <artifactId>master-all</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

Вложение master-public в master-private может быть решением для maven, но будет беспорядок для git.

Есть ли чистый способ сделать это?


person Martin    schedule 16.08.2013    source источник


Ответы (1)


У вас может быть ссылка master-private на master-public. Но по моему опыту, лучше держать их отдельно друг от друга. В конце концов, master-public будет больше настроен на открытый исходный код, возможно, развернутый в Maven Central, в то время как master-private будет развернут в ваш внутренний репозиторий и, возможно, будет иметь некоторые специальные настройки, которые имеют смысл только в вашей корпоративной среде. Скопируйте все, что вам абсолютно необходимо, из вашего master-private в ваш master-public и отключите их.

person rec    schedule 17.08.2013
comment
Я согласен, но как бы вы организовали плагины (например, cobertura) для работы с публичным + частным. Например, если я хочу, чтобы тесты общедоступного API оставались в приватной части, мне нужно запустить cobertura из pom-файла, имеющего доступ к ним обоим, чтобы API был инструментирован перед запуском теста, что невозможно, если у меня есть простая зависимость private-›public. - person Martin; 17.08.2013
comment
Вы должны серьезно подумать о том, чтобы сделать общедоступными тесты вашего общедоступного продукта. Если вы абсолютно не можете этого сделать, вы можете рассмотреть возможность развертывания инструментированных двоичных файлов в репозитории Maven и использовать их при выполнении ваших частных тестов. - person rec; 18.08.2013
comment
На самом деле это не отвечает на вопрос, но побуждает работать по-другому, поэтому я подтверждаю ответ :) Спасибо. - person Martin; 18.08.2013