Код: Выделить всё
root
my-group:app
my-group:app-core, parent my-group:app
class Main
dependency foo:foo-lib
my-group:app-util, parent my-group:app
dependency bar:bar-lib
my-group:lib, parent my-group:lib-parent
dependency bar:bar-lib
Код: Выделить всё
.m2
my-group:lib-parent
dependency qux:qux-lib
Похоже, то же самое не работает из командной строки. mvn настаивает на том, чтобы сначала использовать то, что есть в .m2, и я не нашел способа указать ему использовать последнюю версию из проверенных источников.
Моя основная мотивация — избежать этих затрат, которые являются большим препятствием при итерации кода.
В этом случае все, что мне нужно, это запустить Main, который находится в my-group:app-core. Если есть решение, похожее на mvn dependency:build-classpath, которое сначала локальное, .m2-секундное, это должно работать.
Я не уверен, что другие системы сборки (например, gradle) позволят это, но даже если бы они это сделали, вероятно, это не сработало бы, потому что другие люди используют maven, поэтому мне придется поддерживать две системы сборки.
Есть ли способ заставить maven работать вот так? Если нет, есть ли что-нибудь еще, что может работать с pom.xml без изменений в проектах my-group:app или my-group:lib, которые будут работать таким образом? Если нет, есть ли у меня какие-либо варианты, которые, возможно, изменят эти проекты, но не таким образом, чтобы сделать синхронизацию обременительной (например, добавление некоторых несвязанных файлов может быть в порядке, но изменение pom.xml или сохранение эквивалентной копии для другого инструмента сборки, вероятно, нет)?
Я пытался использовать https://github.com/apache/maven-resolver, но то, что я пробовал до сих пор, либо очень хрупкое (например, не обрабатывает версии через свойства или управление зависимостями) или в любом случае требует установки в .m2, что противоречит цели.
Подробнее здесь: https://stackoverflow.com/questions/798 ... n-projects
Мобильная версия