maven aar传递依赖性无法识别

时间:2015-11-13 10:16:46

标签: android maven android-studio android-espresso

我有两个使用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。

你有什么建议吗?

感谢您的帮助!

1 个答案:

答案 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>