Я хочу работать с зависимостями Maven в проекте IntelliJ Android. Кто-нибудь успешно сделал это?
Можно ли настроить проект IntelliJ Android для работы с Maven?
Ответ 1
Я использую IntelliJ IDEA (в настоящее время v11.0.2, build 111.277) как для Ubuntu 11.10, так и для Mac OS X 10.7.3 для работы над проектами Android на Maven и по большей части работает хорошо. Хорошая вещь об использовании IntelliJ с Android и Maven заключается в том, что вся поддержка уже встроена - дополнительных модулей IDE для установки нет.
В качестве примера хорошего рабочего проекта Android Maven, который можно открыть с помощью IntelliJ, вы можете использовать исходный код Gaug.es для Android с открытым исходным кодом для Android приложение от GitHub (не все разработчики GitHub используют IntelliJ, лично я это делаю - Eclipse также используется для работы над этим проектом).
Первым шагом для бесперебойной работы, очевидно, является обеспечение правильного построения вашего проекта с использованием только простого Maven в командной строке - хотя в вопросе напрямую не спрашивают об этом, я бы посоветовал эти предварительные условия как минимум
- Java 6
- Maven v3.0.3
- android-maven-plugin v3.1.1
- Android SDK r16 (если вы загрузили SDK до r15, вам, вероятно, лучше отключить все это и загрузить его снова, поскольку макет каталога изменился)
Если вы можете mvn install родительский pom вашего проекта, вы можете перейти к фактической работе с ним с помощью IntelliJ.
- Если это первый раз, когда вы открываете проект с помощью IntelliJ, вы все равно можете открыть его в качестве проекта, вам просто нужно выбрать родительский файл pom.xml в диалоговом окне "Открыть проект".
- Убедитесь, что IntelliJ знает, где Java SDK. IntelliJ, даже несмотря на то, что он работает на Java, не позволяет автоматически определять местоположение SDK. Вы должны это сказать. Go
Project Structure,Platform Settings,SDKs, а затем отредактируйте Java SDK, если он отображается красным цветом, указывая ему путь к вашему SDK Java 6. - В этом же диалоговом окне
Project StructureустановитеProject SDKв соответствующую версию Android, а вProjectустановитеProject compiler outputв любое имя каталога, которое вам нравится - это значение требуется для выполнения команды "Сделать", но также переопределены вашими подмодулями, чтобы с уверенностью указывать на каталоги Maven 'target'. - Дважды проверьте, что все данные Maven были проанализированы IntelliJ. У вас должна быть вкладка
Maven Projects. Нажмите кнопкуReimport All Maven Projects(выглядит как две стрелки, преследующие друг друга). Если IntelliJ предложит вам включить авто-импорт, перейдите к нему. Теперь у вас должен быть хотя бы один модуль, указанный на вкладкеMaven Projects, больше, если у вас также есть проект интеграции.
На этом этапе у вас должен быть достаточно значимый опыт IDE. Материал, который должен работать:
- Не должно быть никакого кода, подчеркнутого красным цветом без видимой причины.
- Все импорты (будь то Android SDK, Java, ваш собственный код или apklib) должны быть распознаны. Обратите внимание, что поддержка apklib появилась только с поздней IntelliJ IDEA v10.5.
- Рефакторинг.
-
Force regenerate R.java fileдолжен правильно обновить файл подtarget/generated-sources/r/...- но это работает только в том случае, еслиtarget/generated-sources/rуже задан как исходный путь, т.е. был создан Maven и импортирован IntelliJ. Минимальной альтернативой командной строки является выполнениеmvn android:generate-sourcesиз командной строки в папке затронутого модуля. - Выполнение "Make" проекта в среде IDE технически работает, но опять же может потерпеть неудачу по той же причине. Я вызываю все свои сборки, используя mvn
packageилиinstallв командной строке.
Материал, который может не работать:
- Выполнение индивидуальных тестов интеграции из среды IDE (умирает с
ClassNotFoundException: junit.textui.ResultPrinter)
Если IntelliJ запутался, следующие шаги, как правило, возвратят вас на дорожку:
-
mvn clean installв командной строке - Нажмите кнопку
Reimport All Maven Projects
Некоторые советы:
- Ваши файлы Maven pom.xml должны быть источником правды для вашей конфигурации проекта. Минимизируйте конфигурацию, специфичную для IntelliJ, которую вы выполняете в настройках проекта - некоторые из них будут подвергнуты стиранию в следующий раз, когда параметры будут повторно импортированы из Maven POM, и попытайтесь избежать передачи файлов проекта IntelliJ в исходный контроль.
Надеюсь, что это поможет!
Ответ 2
См. Начало работы с плагином maven-android.
Вот команда, которую вы можете использовать для создания рабочего шаблона sampe с структурой Maven:
mvn archetype:generate \
-DarchetypeArtifactId=android-with-test \
-DarchetypeGroupId=de.akquinet.android.archetypes \
-DarchetypeVersion=1.1.0 \
-DgroupId=com.foo.bar \
-DartifactId=my-android-project \
-Dpackage=com.foo.bar.android
Кстати, IntelliJ встроил поддержку maven, поэтому просто откройте pom.xml, и все будет в порядке.