Структура каталогов Android Maven - PullRequest
11 голосов
/ 13 января 2012

Я успешно установил и настроил подключаемый модуль M2E Maven для Eclipse, а также Android SDK и ADT.

Я хочу создать проекты Android из внутри Maven, и поэтому я нашел эту статью, в которой приведены инструкции по установке подключаемого модуля Android-Maven и использованию уже существующего Android- Архетип Maven для инициализации проекта.

Я следовал инструкциям к букве "T" и прекрасно придумал проект "mavenified".

Единственная проблема в том, что я привык (и очень люблю!) К следующей типичной структуре каталогов Maven:

src/
    main/
        resources/
        java/
    test/
        resources/
        java/

Однако этот архетип, похоже, не содержит каталог src/test/*, только дерево src/main/*. Как мне получить тестовое "поддерево" у себя?

Я думаю, у меня есть два варианта:

  • Найдите другой архетип Android-Maven, который его содержит; или
  • Вручную добавьте папки с исходным кодом test/resources и test/java самостоятельно

Я бы даже не знал, с чего начать искать первый вариант, и, откровенно говоря, я боюсь попробовать второй вариант! Я слышал, что изменение структуры каталогов архетипа может действительно испортить сборку.

Что бы ТАК предложил? Есть ли что-то очевидное, что я здесь скучаю? Заранее спасибо!

1 Ответ

8 голосов
/ 13 января 2012

Ознакомьтесь с разделом «Примечания» на странице «Начало работы» здесь :

Примечания:

  1. Не помещайте тесты в src / test /Java, который вы хотите запустить с помощью плагина Android Maven.Если вы поместите свои тесты туда, Maven запустит их как обычные тесты JUnit в JVM с файлами JAR, которые доступны в classpath, который включает в себя android.jar.Поскольку android.jar содержит только пустые методы, которые генерируют исключения, вы получаете исключения в форме java.lang.RuntimeException: Stub !.Вместо этого тесты должны идти в src / main / java, где они не будут запускаться Maven как тесты во время компиляции, но будут включены в apk, развернуты и запущены на устройстве (где в android.jar есть реализации методоввместо пней).
  2. Если у вас есть тесты JUnit, которые не вызывают API-интерфейсы Android (напрямую или транзитивно), поместите их в src / test / java, чтобы JUnit запускал их локально и быстрее, чем при запуске на устройстве.
  3. Убедитесь, что цель Android Maven установлена ​​на jar-no-fork вместо test-jar-no-fork.Делайте это даже для проектов, которые содержат только тесты.

ОБНОВЛЕНИЕ:
Наиболее подходящим "тестовым" поддеревом IMO является src / test / java, как указаново-вторых, если ваши JUnit-тесты являются чисто POJO-тестами, не требующими вызова Android API, все будет в порядке.

Я использую src / test / java для всех Robolectric тест junit с инструментированным тестом в отдельном тестовом проекте Android, все под управлением maven, у меня все работает нормально.

Оформить пример проекта MorseFlash здесь , который включает src / test / java в качестве примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...