2015-11-13 2 views
0

У меня есть два проекта, связанные с maven. Основной проект включает в себя зависимости aar maven с поддержкой-поддержкой, поддержкой-v4, appcommpat-v7 и другими библиотеками. Второй проект - проект эспрессо-теста, тестирование основных функций приложения и включение основного проекта в зависимость от maven. Мне нужно обратиться к некоторым из этих классов поддержки в моем втором проекте, чтобы проверить их функциональность. Я могу использовать jar-зависимости основного проекта в проекте эспрессо без проблем. Только при попытке ссылаться на классы aar компилятор не может найти их и сообщает мнеmaven aar транзитивные зависимости не распознаются

error: cannot find symbol

. Я работаю с Android Studio в обоих проектах, и когда я смотрю на структуру проекта с помощью своего обозревателя зависимостей, Studio говорит мне, что «классы root ..» требуемых библиотек aar «..invalid».

Вот как пакеты aar включены в основной проект и его необходимый плагин, который также включен во второй проект. Основной проект правильно компиляции:

<dependency> 
       <groupId>com.google.download.android</groupId> 
       <artifactId>support-v4</artifactId> 
       <version>22.2.1</version> 
       <type>aar</type> 
    </dependency> 

<plugin> 
       <groupId>com.simpligility.maven.plugins</groupId> 
       <artifactId>android-maven-plugin</artifactId> 
       <version>4.2.1</version> 
       <extensions>true</extensions> 
       <configuration> 
        <release>true</release> 
        <sign> 
         <debug>true</debug> 
        </sign> 
        <proguard> 
         <skip>true</skip> 
        </proguard> 
        <failOnNonStandardStructure>false</failOnNonStandardStructure> 
        <androidManifestFile> 
         AndroidManifest.xml 
        </androidManifestFile> 
        <resourceDirectory>res</resourceDirectory> 
        <assetsDirectory>assets</assetsDirectory> 
        <nativeLibrariesDirectory>libs 
        </nativeLibrariesDirectory> 

        <sdk> 
         <platform>22</platform> 
         <path>${sdk-path}</path> 
        </sdk> 
       </configuration> 
       <executions> 
        <execution> 
         <id>alignApk</id> 
         <phase>package</phase> 
         <goals> 
          <goal>zipalign</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

Моей попытки решить проблему: включая зависимость, как это предусмотрено в П эспрессо проекта.

<dependency> 
      <groupId>com.google.download.android</groupId> 
      <artifactId>support-v4</artifactId> 
      <version>22.2.1</version> 
      <type>aar</type> 
      <scope>provided</scope> 
     </dependency> 

-> Не разрешили проблему.

Дополнительные требования: Мне нужно использовать maven для компиляции и can't перейти к gradle.

У вас есть совет?

Благодарим за помощь!

ответ

0

Ошибка Cannot find symbol указывает на то, что с вашим кодом что-то не так, а не с управлением зависимостями. Тем не менее, я думаю, что вы описываете ту же проблему, что и в другом вопросе: Transitive AAR dependencies in Maven

Ответ на этот вопрос заключается в том, чтобы исключить проблемную зависимость от зависимости от вашего основного проекта в проекте эспрессо-теста и затем добавить ту же проблему, что и эспрессо тестовый проект, убедившись, что явно указывается тип как aar. Таким образом, POM для вашего проекта эспрессо-теста будет иметь нечто похожее на следующее.

<dependency> 
    <groupId>your.main</groupId> 
    <artifactId>project</artifactId> 
    <version>0.0.0</version> 
    <exclusions> 
    <exclusion> 
     <groupId>com.android.support</groupId> 
     <artifactId>support-v4</artifactId> 
    </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <artifactId>support-v4</artifactId> 
    <groupId>com.android.support</groupId> 
    <version>22.2.1</version> 
    <type>aar</type> 
</dependency> 
Смежные вопросы