Возможность динамического разрешения зависимостей модулей на основе версии

Предыстория:

В eclipse, когда у вас есть несколько проектов, открытых с помощью pom-файлов (и, следовательно, версий), он автоматически будет использовать локальные ссылки, если версии соответствуют одной из перечисленных вами зависимостей. Если они не совпадают, то он полагается на артефакт в репо. (Это удобно, так как позволяет выполнять живые изменения / ссылки на активные версии, при этом фиксированные зависимости от нестабильных версий проекта / зависимостей).



Вопрос

В граде, кажется, нет способа сказать

Я полагаюсь на этот подмодуль, версия X

Скорее, кажется, вы только можете сказать

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


Итак, есть ли лучший синтаксис для обычного:

compile project(':submodules:submodule1') 

Возможно, что-то вроде ?:

 compile project(':submodules:submodule1:0.1-SNAPSHOT') 

или

 compile project('com.mydomain:submodule1:0.1-SNAPSHOT') 

Возможно, вы не хотите использовать ссылки на проекты, если вам нужно зависеть от конкретной версии. Ссылка на проект в основном говорит о том, что вы упомянули в своем вопросе. Точнее, это не «мне все равно, какая версия», а нечто вроде «Я полагаюсь на этот подпроект» в версии / состоянии, которое сейчас только что ». Это то, на что ссылаются ссылки на проект, – объявление зависимости от другого проекта , а не конкретного JAR / версии.

Если вам нужно зависеть от конкретной версии, вы должны объявить ее без зависимости от проекта, например:

 compile('com.mygroupid:submodule1:0.1-SNAPSHOT') 

Которая является сокращенной версией

 compile(group:'com.mygroupid', name:'submodule1', version:'0.1-SNAPSHOT') 

По умолчанию это будет использовать артефакт из репо. Но есть решение, которое может приблизить вас к тому, что вы хотите. Плагин eclipse-integration-gradle может обнаруживать такие зависимости и заменять их зависимостями проектов для Eclipse. Опция называется «Remap Jars to Gradle Projects».

В результате, если в рабочем пространстве Eclipse есть целевой проект, имя которого соответствует целевому модулю, такой проект Eclipse будет использоваться вместо JAR репо.

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