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

问题描述 投票:0回答:2

我正在尝试将基于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。

谢谢你的帮助

maven android-gradle android-build gradle-plugin maven-dependency
2个回答
1
投票

'gradle'工件不包含缺失的包。如您所述,它至少依赖于包含该包的一个工件,但仅限于范围“运行时”。因此,它在编译类路径上不可用于您的项目。

无论如何,在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,但如果你出于某种原因想要使用旧版本,它可能也会工作。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.