我有两个使用maven设置的项目。主要项目包括对支持设计,support-v4,appcommpat-v7和更多库的aar maven依赖。第二个项目是espresso测试项目,测试应用程序的主要功能,并将主项目包括为maven依赖项。我需要在我的第二个项目中引用其中一些支持类来测试它们的功能。我可以毫不费力地在espresso项目中使用主项目的jar依赖项。只有在尝试引用aar类时,编译器才能找到它们并告诉我
错误:找不到符号
。我正在两个项目上使用Android Studio,当我查看项目结构及其依赖项资源管理器时,Studio告诉我所需的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>
我试图解决这个问题: 包括espresso项目pom中提供的依赖项。
<dependency>
<groupId>com.google.download.android</groupId>
<artifactId>support-v4</artifactId>
<version>22.2.1</version>
<type>aar</type>
<scope>provided</scope>
</dependency>
- &GT;没有解决问题。
附加要求:我需要使用maven进行编译,而不能移动到gradle。
你有什么建议吗?
感谢您的帮助!
答案 0 :(得分:0)
错误Cannot find symbol
会告诉我您的代码有问题,而不是依赖关系管理。不过,我认为您正在描述另一个问题中提出的相同问题:Transitive AAR dependencies in Maven
答案是在espresso测试项目中排除依赖关系到主项目的问题依赖关系,然后向espresso测试项目添加相同的问题依赖关系,确保明确指定类型为aar
。因此,您的espresso测试项目的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>