如何从 Maven 中的 `com.android.build.api.transform` 包导入 类

How to import classes from `com.android.build.api.transform` package in Maven

我正在尝试将 android 的基于 gradle 的构建插件传输到 Maven 构建系统。 到目前为止,除了 android 部分,我都成功了。

看来我的包裹 com.android.build.api.transform 中缺少 类。虽然我用了这段代码

    <dependency>
        <groupId>com.android.tools.build</groupId>
        <artifactId>gradle</artifactId>
        <version>2.2.0</version>
        <type>jar</type>
    </dependency>

它应该(而不是间接地)提供所需的 classes/packages,但似乎这不起作用。

我也加了

<repositories>
    <repository>
        <id>android</id>
        <name>android</name>
        <url>https://plugins.gradle.org/m2/</url>
    </repository>
</repositories>

以防万一,运气不好。由于缺少 类.

,该项目仍然无法编译

知道我错过了什么吗?我是 gradle/maven 领域的新手,使用这些工具时我仍然感到力不从心。

参考 here is a link 此工件的 javadoc。

感谢您的帮助

'gradle' 工件不包含丢失的包。正如您提到的,它传递地依赖于至少一个包含该包的工件,但仅在范围 'runtime' 内。因此,编译类路径上的项目将无法使用它。

无论如何,在 pom.xml 中显式添加依赖项是正确的做法。在 search.maven.org 上搜索丢失的包表明您可以在 com.android.tools.build:transform-api 和 com.android.tools.build:gradle-api 之间进行选择.锁定 transform-api 工件表明它已被弃用,并鼓励使用 gradle-api 代替。 (最新版本是'2.0.0-deprecated-use-gradle-api')。我下载了gradle-api jar文件,里面确实有缺少的包。所以请尝试将该工件添加到您的 pom.xml 中:

<dependency>
    <groupId>com.android.tools.build</groupId>
    <artifactId>gradle-api</artifactId>
    <version>2.3.0</version>
</dependency>

我没有检查 2.2.0 版,但如果您出于某种原因想要使用旧版本,它可能也可以。

转换 API 是 Google 的 Android Gradle 插件技术。但它被 Gradle 吸收并扩展。所以较新的 Android 插件迁移到 Gradle API,它们不再包含转换引擎,它现在是 Gradle 的一部分。如果您使用与旧插件捆绑在一起的 Google 中已弃用的转换 API,您将获得该引擎。但是你打算如何处理 Gradle 上的所有其他依赖项,我不知道。