【问题标题】:maven aar transitive dependencies not recognizedmaven aar 传递依赖无法识别
【发布时间】:2015-11-13 10:16:45
【问题描述】:

我有两个使用 maven 设置的项目。主项目包括对 support-design、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>

-> 没有解决问题。

附加要求:我需要使用 maven 进行编译,不能迁移到 gradle。

你有什么建议吗?

感谢您的帮助!

【问题讨论】:

标签: android maven android-studio android-espresso


【解决方案1】:

错误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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    相关资源
    最近更新 更多