android - Maven 中的传递 AAR 依赖项

标签 android maven jar packaging aar

我正在从一个使用 android-maven-plugin 的 Maven 项目构建一个 Android 应用程序。在这个项目中,我使用了新的 beta 数据绑定(bind)库。

它包含在 Android SDK 的本地 m2repository (extras/android/m2repository) 中。此存储库中的库被打包为 aar 类型。

我可以像这样在我的 pom 中添加依赖项:

    <dependency>
        <groupId>com.android.databinding</groupId>
        <artifactId>library</artifactId>
        <version>1.0-rc1</version>
        <type>aar</type>
    </dependency>

这似乎可行,但构建失败了:

无法在项目演示上执行目标:无法解析项目 com.simpligility.android:demo:apk:1.0.0 的依赖项:无法在中找到 com.android.support:support-v4:jar:21.0.3 file:///Users/eppleton/Java Libraries/android-sdk-macosx/extras/android/m2repository 被缓存在本地存储库中,在 android-local-extras 的更新间隔结束或更新结束之前不会重新尝试解析强制 -> [帮助 1]

这个本地存储库中没有 support-v4:jar 是正确的,因为 API 版本 20 有 support-v4:aar。

有没有办法让 maven 寻找 aar 而不是 jar?

P.s.:对于我自己的本地构建,我有几种解决方法(例如重新打包为 jar),但我更喜欢更通用的解决方案,因为我想在 maven 原型(prototype)中共享配置,并且我不想要求用户需要做大量的手工工作。现在这是我拥有的最佳解决方案:

    <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>support-v4</artifactId>
        <version>21.0.3</version>
        <scope>system</scope>
        <systemPath>${android.sdk.path}/extras/android/support/v4/android-support-v4.jar</systemPath>
    </dependency>

但这不是很好,传递依赖解决为 aar 会好得多。

最佳答案

好的,找到解决方案了。我可以排除依赖项,然后直接将其添加为“aar”类型:

      <dependency>
        <groupId>com.android.support</groupId>
        <artifactId>support-v4</artifactId>
        <version>21.0.3</version>
        <type>aar</type>
    </dependency>

    <dependency>
        <groupId>com.android.databinding</groupId>
        <artifactId>library</artifactId>
        <version>1.0-rc1</version>
        <type>aar</type>
        <exclusions>
            <exclusion>
                <groupId>com.android.support</groupId>
                <artifactId>support-v4</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

关于android - Maven 中的传递 AAR 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32022842/

相关文章:

java - 错误 :(19, 13) 无法解析 : javax. 注释 :jsr250-api:1. 0

eclipse - 使用 m2e 配置 Eclipse Formatter

android - SimpleDateFormat 返回字符串?

android - RemotePlaybackClient,stop() 没有得到回调

maven - 如何修复使用 GCSUtil 写入文件时有关线程组仍在运行的 Maven 警告?

java - 在 Spark 提交期间抛出 NoClassDefFoundError

java - Java 项目中缺少 JAR

java - 您可以将 .smali 转换为 .jar

java - 即使图像存在,可运行的 jar 文件也找不到图像

android - Retrofit 2.3 无法在 8.0 设备上找到可接受的协议(protocol)