2013-11-29 3 views
3

У меня есть многомодовый проект maven (см. Прикрепленное изображение для структуры). Я в процессе перехода к Gradle.Gradle: Условное включение подпроектов

Project Structure

Мы имеем несколько профилей внутри AppBuild/pom.xml, как показано ниже; и мы запускаем нашу сборку maven из AppBuild с параметром -P для профилей.

Profile Structure

Поскольку я новичок в Gradle, я не могу решить, что это лучший способ пойти об этом. Теперь я думаю поставить некоторый условный include в settings.gradle на основании некоторого аргумента -P, но я не уверен. Может ли кто-нибудь помочь мне, как это сделать? Каков наилучший способ с некоторыми примерами.

Заранее спасибо.

~ Niranjan

+0

Не градиентный способ решить эту проблему: сделать несколько альтернативных настроек.gradle файлов, а затем некоторые скрипты, чтобы перемещать их по мере необходимости. – spy

ответ

1

Условный включают не просто в Gradle (это не особенность первого класса), и непонятно, почему вы это нужно так несколько подпроектов. Я рекомендую начать без него и добавить все четыре подпроекта в settings.gradle.

+0

Привет, Питер. Для примера, который я показал немного, мой первоначальный проект имеет 15 подпапок в папке «AppBuild», и мы генерируем 6 различных артефактов из них (4 веб-приложения WAR, 2 TAR-файла). И мы не хотим всегда запускать всю сборку; следовательно, с maven мы добавили несколько профилей с требуемыми модулями. Поскольку директива состоит в том, чтобы перейти к Gradle, нам нужна была аналогичная функция. Я думал добавить «-P» с Gradle и на основе этих «include» обязательных проектов. Оцените, можете ли вы помочь нам в предоставлении другого решения этой проблемы. – Niranjan

+0

Gradle достаточно умен, чтобы восстановить только то, что требуется, следовательно, все должно быть в порядке. Я не рекомендую попробовать и подражать условным условностям Maven - это не обязательно для вашего количества проектов, и его сложно реализовать хорошо. При необходимости вы можете ускорить сборку с помощью '--parallel' и' --configuration-on-demand' (см. [Руководство пользователя Gradle] (http://gradle.org/docs/current/userguide/userguide_single. html) для деталей). –

+0

У меня есть аналогичный вариант использования и вам нужно отключить определенные модули во время указанных профилей сборки. Еще один надзор с градием. Нормальный, если тогда еще бит для модуля/build.gradle не работает, а settings.gradle, по-видимому, не поддерживает структуры if-then-else. – spy

1

Недавно я столкнулся с одним и тем же вопросом, так как у меня многопроектная сборка, где я хочу включить специальный подпроект только в некоторых случаях.
Этот специальный подпроект зависит только от одного другого подпроекта и занимает около 1-2 минут для настройки. Поэтому я не хочу включать его, если я не хочу его строить. Это экономит время сборки. Итак, что я сделал, чтобы изменить settings.gradle

if(file('MySpecialProject').exists()){ 
    include ':MySpecialProject' 
} 

Когда я не хочу строить MySpecialProject я могу просто переименовать/удалить его папку. В моем случае папка является символической ссылкой, так как этот «подпроект» находится в собственном git-репо. Даже если @spy пишет, что если/then/else невозможно в настройках, это действительно сработало для меня.

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