Maven 中的传递 AAR 依赖项
Transitive AAR dependencies in Maven
我正在从一个使用 android-maven-plugin 的 Maven 项目构建一个 Android 应用程序。在这个项目中,我使用了新的 beta 数据绑定库。
它包含在 Android SDK (extras/android/m2repository) 的本地 m2 存储库中。此存储库中的库被打包为 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 in 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 原型中共享配置,并且我不想要求用户做很多手工工作。现在这是我拥有的最佳解决方案:
<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-plugin 的 Maven 项目构建一个 Android 应用程序。在这个项目中,我使用了新的 beta 数据绑定库。
它包含在 Android SDK (extras/android/m2repository) 的本地 m2 存储库中。此存储库中的库被打包为 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 in 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 原型中共享配置,并且我不想要求用户做很多手工工作。现在这是我拥有的最佳解决方案:
<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>