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

时间:2017-10-04 23:04:44

标签: maven android-gradle android-build gradle-plugin maven-dependency

我正在尝试将基于gradle的构建插件for android转移到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>

应该提供(而非间接)所需的类/包,似乎这不起作用。

我还添加了

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

以防万一,没有运气。由于缺少类,项目仍然无法编译。

知道我错过了什么吗?我对gradle / maven场景很陌生,我仍然觉得这些工具离开了我的水域。

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

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

&#39; gradle&#39;工件不包含缺少的包。正如您所提到的,它至少依赖于包含该包的一个工件,但仅限于范围&#39;运行时&#39;。因此,它在编译类路径上不可用于您的项目。

无论如何,在pom.xml中显式添加依赖项是正确的。在search.maven.org上搜索缺失的包表明您可以在com.android.tools.build:transform-api和com.android.tools.build:gradle-api之间进行选择。锁定transform-api工件会发现它已被弃用并鼓励使用gradle-api。 (最新版本是&#39; 2.0.0-deprecated-use-gradle-api&#39;)。我下载了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版本,但如果由于某种原因想要使用旧版本,它可能也会有效。

答案 1 :(得分:0)

transform API是Google的Android Gradle插件技术。但是它被Gradle吸收并扩展了。因此,较新的Android插件迁移到了Gradle API,并且不再包含转换引擎,该引擎现在是Gradle的一部分。如果您使用与旧插件捆绑在一起的Google弃用的transform API,则会获得引擎。但是您打算对Gradle上的所有其他依赖项做什么呢,我不知道。