- Создание Android-проектов с использованием Maven
- Что вы создадите
- Что вам потребуется
- Как проходить этот урок
- Настройка проекта
- Создание структуры каталогов
- Создание Android манифеста
- Установка Maven
- Настройка простой Maven сборки
- Сборка Android кода
- Описание записимостей
- Пересборка Android кода с зависимостями
- Что такое Maven в Android Studio?
- Apache Maven — основы
- Терминология
- Установка Maven
- Создание приложения из архетипа
- Сборка проекта
- Зависимости и репозитории
- Плагины
- Собственный репозиторий
Создание Android-проектов с использованием Maven
Этот урок освещает создание простого Android проекта с Maven.
Что вы создадите
Вы создадите Android приложение, которое отображает время дня, а потом соберете его Maven’ом.
Что вам потребуется
- Примерно 15 минут свободного времени
- Любимый текстовый редактор или IDE
- JDK 6 и выше
- Android SDK
- Android устройство или эмулятор
Как проходить этот урок
Как и большинство уроков по Spring, вы можете начать с нуля и выполнять каждый шаг, либо пропустить базовые шаги, которые вам уже знакомы. В любом случае, вы в конечном итоге получите рабочий код.
Чтобы начать с нуля, перейдите в Настройка проекта.
Чтобы пропустить базовые шаги, выполните следующее:
- Загрузите и распакуйте архив с кодом этого урока, либо кнонируйте из репозитория с помощью Git: git clone https://github.com/spring-guides/gs-maven-android.git
- Перейдите в каталог gs-maven-android/initial
- Забегая вперед, установите Maven
Когда вы закончите, можете сравнить получившийся результат с образцом в gs-maven-android/complete .
Настройка проекта
Для начала, вам необходимо настроить Android проект для сборки Maven. Т.к. основное внимание данного урока уделено Maven, сделайте проект настолько простым, насколько это возможно. Если вы впервые работаете с Android проектами, установите и настройте ADT.
Создание структуры каталогов
В выбранном вами каталоге проекта создайте следующую структуру каталогов; к примеру, командой mkdir -p src/main/java/org/hello для *nix систем:
Создание Android манифеста
Android Manifest содержит всю информацию, необходимую для запуска Android приложения и оно не будет собираться без него.
Добавьте текстовую строку. Текстовые строки могут ссылаться на файлы приложения или другие источники.
Теперь определите визуальную структуру пользовательского интерфейса вашего приложения.
В директории src/main/java/org/hello вы можете создать любой Java класс, какой захотите. В соответствии с задачей урока, создайте следующий класс:
Установка Maven
Теперь у вас есть проект, который вы можете собрать с помощью Maven. Следующим шагом будет установка Maven.
Загрузите Maven как zip-файл с http://maven.apache.org/download.cgi. Достаточно только бинарники, поэтому смотрите ссылку на apache-maven-
Загрузите и распакуйте файл, затем добавьте bin каталог в переменную окружения PATH.
Чтобы протестировать устаноку Maven, запустите mvn из командной строки:
Если все хорошо, то вы должны увидеть информацию об установке, похожую на эту:
Теперь у вас есть установленный Maven.
Настройка простой Maven сборки
Теперь, когда Maven установлен, вам необходимо создать определение Maven проекта через XML-файл pom.xml. Помимо всего остального, этот файл содержит имя проекта, версию и зависимости, которые он имеет от внешних библиотек.
Создайте файл с названием pom.xml в корне проекта и поместите в него следующее содержимое:
Это простейший pom.xml файл, который необходим для сборки Android проекта. Он состоит из следующих настроек проекта:
— Как проект будет собран, в данном случае как Android APK
Секция dependencies определяет список зависимостей проекта. В частности, она определяет единственную зависимость от Android библиотеки. В элементе dependency зависимость определяется деревом дочерних элементов:
В данном случае элемент имеет значение provided . Зависимости этого типа необходимы для компиляции кода проекта, но будут доступны и во время выполнения кода. К примеру, Android API всегда доступен, когда Android приложение запущено.
Секция определяет дополнительную конфигурацию для сборки приложения. В этой секции есть секция
, которая содержит список плагинов, которые добавляют функциональность процессу сборки. Здесь определена конфигурация для Android Maven Plugin. Для этой зависимости также имеются элементы , и . Плагин также содержит следующие элементы:
- — Конфигурация плагина. Здесь вы определяете, с каким Android Platform SDK будет собираться проект
- — Комбинация указания значений true и apk для
передает управление [Android Maven Plugin] в процессе сборки.
На текущий момент вы определили пока минимальный Maven проект.
Сборка Android кода
Сейчас Maven готов к сборке. Вы можете выполнить выполнить несколько задач сборки уже сейчас, включая компиляцию кода проекта, создание библиотеки пакета(JAR файл) и установить библиотеку в локальный репозиторий Maven зависимостей.
Эта команда запускает Maven, говоря ему выполнить задачу compile. Когда он завершит её, вы должны найти скомпилированные .class файлы в каталоге target/classes.
Т.к. вы вряд ли захотите работать или распостранять .class файлы непосредственно, взамен этого возможно запустить package задачу:
Эта задача компилирует ваш Java код, запускает тесты и упаковывает код в JAR файл каталоге target. Имя JAR файла состоит из значений и проекта. К примеру, исходя из содержимого pom.xml файла, отображенного ранее, JAR файл будет называться gs-maven-android-0.1.0.jar.
Т.к. вы установили значение элемента
в «apk», результатом будет АРК файл в target каталоге в дополнение к JAR файлу. Этот АРК файл является упакованным Android приложением, готовым к развертыванию на устройстве или эмуляторе.
Android Maven плагин предоставляет несколько Maven задач, которые вы можете использовать в различных фазах процесса сборки или взаимодействия с устройством и эмулятором. Список доступных задач вы можете увидеть, выполнив команду:
Описание записимостей
Простой Hello World пример полностью самодостаточен и не зависит от каких-либо дополнительных библиотек. Однако, большинство приложений, зависят от внешних библиотек, предоставляющих некоторую функциональность.
К примеру, предположим, что вы хотите, чтобы приложение отображало текущие дату и время. Несмотря на то, что вы фактически можете использовать дату и время из нативных Java библиотек, возможно использовать более интересные для этого вещи, которые предоставляют Joda Time библиотеки.
Для этого, измените HelloActivity.java как показано ниже:
В этом примере используемый Joda Time LocalTime класс возвращает и отображает текущее время.
Если вы запустите mvn package сейчас, то сборка завершится с ошибкой, потому что вы не описали Joda Time как компилируемую зависимость в сборке. Для исправления этой ошибки, просто добавьте следующие строки в секцию файла pom.xml.
Пересборка Android кода с зависимостями
Теперь, если вы выполните mvn compile или mvn package , то Maven должен разрешить Joda Time зависимость из Maven Central репозитория и успешно собрать проект.
Ниже приведена полная версия pom.xml файла:
Поздравляем! Вы только что создали простой, но эффективный Maven проект с целью сборки Android проектов.
Источник
Что такое Maven в Android Studio?
Есть много ответов на вопрос о том, как использовать Maven в Android и работать с ним.
Тем не менее , As Gradle уже доступен, который управляет процессом сборки проектов Android и поддерживает сложные сценарии при создании приложений для Android, таких как Multi-distribution и Multi-apk ,
Какова роль Maven в Android Studio?
И как он отличается от Gradle ?
Короткий ответ: инструменты делают то же самое, но по-разному. Разница заключается в том, как вы можете использовать его для создания своего проекта. Apache Maven идет за «следовать за нашей конвенцией», и Gradle дает вам гибкость. Некоторым разработчикам не нужен новый инструмент или у него нет времени, чтобы научиться правильно его использовать.
Теперь длинный ответ …
Чтобы правильно понять, почему некоторые разработчики привязаны к Apache Maven, мы должны смотреть несколько лет назад.
Apache Maven – это инструмент автоматизации сборки, как Gradle .
Maven был выпущен в 2004 году. Gradle первая версия вышла в 2007 году, но он не стал таким популярным, как Maven в первые дни. Некоторым разработчикам не нравится узнавать что-либо новое, и большинство компаний не хотят рисковать обменом уже запущенным и освоенным инструментом ( Maven ) для нового ребенка на блоке.
Gradle стал популярным, когда развилась разработка Android. Проект Android имеет другую структуру проекта из проектов Java EE / Web. Попытка использовать Maven в проекте Android просто неестественна, инструмент не был подготовлен к обеспечению гибкости.
До сих пор Apache Maven может использоваться на простых проектах Java EE без боли в заднице, если вы уже знаете принудительные соглашения. Поэтому разработчики, которые не знают о Gradle / не получили контакта с приложениями Android, не имеют мотивации к изменению на другой инструмент.
На мой взгляд, Gradle лучше, чем Apache Maven во всех отношениях, которые вы могли себе представить. Это дает вам гибкость и пытается не мешать вам, «особенность», которую вы не можете найти в Apache Maven . Если вы не будете следовать жизненному циклу Apache Maven , ваша сборка не удастся, вот и все.
Например, ваш код может быть распространен по многим каталогам в любом виде макета, если вы используете Gradle . Если вы находитесь на Maven и вы не следуете «конвенции», вы потеряете несколько часов, изменив свой pom (файл сборки Maven ), чтобы понимать и обрабатывать вашу структуру папок.
Например: исходный код Java должен находиться в папке src/main/java . Если у вас есть старый проект и структура src/java , извините, у вас нет гарантии, что все плагины Maven будут работать, как ожидалось.
Источник
Apache Maven — основы
После публикации топика о Maven в комментариях возникли вопросы о том, как начать с ним работать, с чего начать, как составлять файлы pom.xml, откуда брать плагины и т.п. Данный топик будет своего рода getting started или f.a.q.
Терминология
Как в любой системе, в Maven, есть свой набор терминов и понятий.
Вся структура проекта описывается в файле pom.xml (POM – Project Object Model), который должен находиться в корневой папке проекта. Ключевым понятием Maven является артефакт — это, по сути, любая библиотека, хранящаяся в репозитории. Это может быть какая-то зависимость или плагин.
Зависимости — это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования.
Плагины же используются самим Maven’ом при сборке проекта или для каких-то других целей (деплоймент, создание файлов проекта для Eclipse и др.).
В самом начале работы с Maven, пользователь непременно столкнется с таким понятием как архетип. Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода (веб, swing-проекты и прочие). Другими словами, Maven знает, как обычно строятся проекты и в соответствии с архетипом создает структуру каталогов.
Как правило, название артефакта состоит из названия группы, собственного названия и версии. К примеру Spring будет иметь вот такое название в среде Maven: org.springframework.spring:2.5.5. Последний домен означает всегда artifactId, все, что перед ним – groupId – хорошо это запомните!
На жизненном цикле останавливаться не буду, так как он хорошо описан в вышеобозначенной статье. А теперь перейдем к практике.
Установка Maven
Последнюю версию всегда можно скачать на странице загрузки на официальном сайте. Просто распаковываем архив в любую директорию. Далее необходимо создать переменную в Path, в которой необходимо указать путь к Maven. Заходим в Win + Pause – Дополнительно – Переменные среды – в верхнем окошке нажимаем Создать, вводим имя M2_HOME и значение допустим “C:\apache-maven-2.2.1”. Далее там же создаем еще одну переменную M2 со значением %M2_HOME%\bin. Так же убеждаемся, что есть переменная JAVA_HOME с путем к JDK. Ее значение должно быть примерно таким «c:\Program Files\Java\jdk1.6.0_10\». И наконец в том же окошке создаем/модифицируем переменную Path, в нее необходимо просто написать %M2%, чтобы наша папочка с исполняемым файлом Maven была видна из командной строки. Теперь необходимо проверить работоспособность нашей установки. Для этого заходим в командную строку и вводим команду
Должна появиться информация о версиях Maven, jre и операционной системе, что-то вроде:
Maven создаст вам локальный репозиторий в вашей личной папке, например в каталоге C:\Documents and Settings\username\.m2\repository
Все, Maven готов к работе, можно приступать к созданию приложения.
Создание приложения из архетипа
На сайте Maven перечислены наиболее популярные архетипы для приложений, но вы можете легко создать свой или найти более специфичный например здесь.
Итак, допустим нас интересует веб-приложение – находим подходящий архетип, называется он maven-archetype-webapp. В командной строке, в необходимом каталоге выполняем команду Maven:
Теперь мы можем лицезреть довольно наглядную структуру каталогов с говорящими названиями java – здесь будут ваши классы, webapp – здесь размещаются странички веб-приложения, resources – различного рода ресурсы в classpath (файлы конфигурации, например), test – юнит-тесты, соответственно и т.п.
Сборка проекта
Здесь все просто – выполняем команду
в корневом каталоге приложения, там, где находится файл pom.xml. Первая команда скомпилирует ваш проект и поместит его в папку target, а вторая еще и положит его к вам в локальный репозиторий.
Есть полезная функция, наподобие конвеера, то есть можно написать
и Maven сначала очистит папку target проекта, потом соберет его и положит в репозиторий.
Минимальный набор действий для работы Maven мы изучили, теперь переходим к кастомизации и добавлению зависимостей проекта.
Зависимости и репозитории
Как правило, большинство популярных библиотек находятся в центральном репозитории, поэтому их можно прописывать сразу в раздел dependencies вашего pom-файла. Например чтобы подключить Spring Framework необходимо определить следующую зависимость:
Версию хотя и можно не указывать и тогда Maven возьмет последний вариант, но я вам лично советую это делать, потому как у нас неоднократно бывали случаи, что проект просто в один момент переставал собираться или начинал падать в совершенно неожиданных и хорошо оттестированных местах, хотя вроде бы никто ничего не менял.
Специфические вещи обычно не находятся в центральном репозитории и тогда вам придется указать репозиторий производителя вручную. Для примера добавим зависимость JSF-фреймворка ajax-компонентов JBoss RichFaces.
С зависимостями все просто:
А вот репозиторий JBoss теперь необходимо прописать ручками либо в файле settings.xml, который лежит в корне вашего локального репозитория, либо в самом файле pom.xml, в зависимости от того, нужен ли данный репозиторий во всех проектах, либо в каком-то одном конкретном, соответственно:
Как правило на сайтах крупных проектов пишут всю информацию, необходимую для встраивания их библиотеки в проект на основе Maven, но бывают случаи, когда артефакт приходится искать очень и очень долго. Здесь нам очень сильно может помочь MVNrepository.com — он вам всегда подскажет где может находиться искомая библиотечка. Но если уж и там не нашлось, то из собственного опыта могу посоветовать гуглить « pom.xml». Бывает так, что проекты уже давно закрыты и в репозитории не положены потому что разработчики уже не заботятся об их распространении. Тогда остается один единственный способ – добавить файл в репозиторий вручную командой:
Последний параметр чаще всего имеет значение jar.
Плагины
Так как плагины являются такими же артефактами, как и зависимости, то они описываются практически так же. Вместо раздела dependencies – plugins, dependency – plugin, repositories – pluginRepositories, repository – pluginRepository.
Плагинами Maven делает все, даже непосредственно то, для чего он затевался – сборку проекта, только этот плагин необязательно указывать в свойствах проекта, если вы не хотите добавить какие-то фичи.
Посмотрим как настроить плагин для создания проекта для Eclipse с использованием WTP ver. 2.0. В раздел plugins нашего pom.xml прописываем следующий плагин:
Теперь идем опять таки в командную строку и выполняем команду
Ждем пока Maven найдет все библиотеки в репозитории или скачает их и вуаля – теперь наш Maven-проект можно открыть как проект eclipse. При этом библиотеки никуда не копируются как при классическом подходе, а остаются в репозитории и Eclipse делает на них ссылку через свои переменные.
Единого списка всех плагинов естественно не существует, на официальном сайте только есть поддерживаемые плагины непосредственно разработчиками Maven. Однако хотелось бы отметить, что названия плагинов довольно прямолинейны и сделав поиск по ключевым словам «maven tomcat plugin» вы скорее всего обнаружите первой ссылкой плагин для деплоймента проекта в Tomcat.
Собственный репозиторий
К сожалению сам не имею большого опыта настройки репозитория, но могу посоветовать как наиболее простой и распространенный Nexus. За дополнительной информацией следует обратиться на сайт данного проекта.
Однако нельзя оставить без внимания и достойных конкурентов в лице Artifactory и Archiva.
Источник