Я хочу работать с зависимостями 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, и все будет в порядке.