У меня есть проект корня колышки P
с двумя подпроектами P:foo
и P:bar
. Естественно, Gradle строит их в алфавитном порядке: bar
, foo
. Но мне нужно, чтобы foo
был построен первым, когда я говорю gradle build
в корневом каталоге P
. Это связано с тем, что bar
зависит от артефакта AAR (Android), который foo
публикует в местном репозитории Maven. Оба bar
и foo
- такие проекты для Android-библиотек.Модуль сборки строгального модуля
Это похоже на легкую проблему, но я не могу понять это. Я читал около evaluationDependsOn
, поэтому в bar/build.gradle
, я говорю в первой строке: evaluationDependsOn "foo:"
. Увы, это, похоже, не имеет никакого эффекта. Является ли эта функция Gradle сломанной в конце?
Используя compile project
, я мог бы ввести в действие foo
, который будет создан первым, но это добавит скомпилированные классы непосредственно к bar
, чего я не хочу.
Так что я застрял. Я мог бы переименовать foo
в aaa_foo
, и все мои проблемы исчезнут, но я не решаюсь назвать это решением.
«Используя компиляционный проект, я мог бы обеспечить, чтобы foo был создан первым, но это добавило бы скомпилированные классы непосредственно в bar, что я не хочу» - только если «bar» - это прикладной модуль, и в этом Если вы хотите, чтобы в нем были классы 'foo'. Если 'bar' является библиотечным модулем, классы' foo' не будут входить в 'bar' AAR. – CommonsWare
Если я говорю 'compile project', Gradle пытается связать библиотеку дважды (один раз для' compile project' и один раз для зависимости Maven-repository), и я получаю сообщение об ошибке «Ошибка: более одной библиотеки с именем пакета "com.acme.frob». – phkoester
Тогда ваши скрипты сборки Gradle имеют проблемы. Поскольку ваш вопрос не включает их, я не могу точно сказать, где вы ошибетесь. Но почти каждая из моих библиотек CWAC имеет два модуля: библиотеку и демонстрационный проект, который связан с библиотекой. Иногда проект имеет две библиотеки или две демонстрации. Все они работают с использованием 'compile project()' (для зависимостей между библиотеками от одного и того же общего проекта) или 'debugCompile project()' (для зависимостей между библиотеками, где я использую 'releaseCompile', чтобы подтвердить, что я может вытащить из моего хранилища артефактов). – CommonsWare