我正在尝试将基于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。
谢谢你的帮助
'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,但如果你出于某种原因想要使用旧版本,它可能也会工作。
transform API是Google的Android Gradle插件技术。但它被Gradle吸收并扩展。所以更新的Android插件迁移到Gradle API,它们不再包含转换引擎,现在它是Gradle的一部分。如果您使用与旧版插件捆绑在一起的Google弃用转换API,您将获得引擎。但是你打算对Gradle上的所有其他依赖项做什么,我不知道。