gradle - 如何使用 Gradle API 获取 Android Studio 主 SourceSet?

标签 gradle android-gradle-plugin gradle-plugin

我正在为 Android Studio 开发一个 gradle 插件。这是我的问题如何使用 Gradle API 获取 Android Studio 主 SourceSet?

我想用java源目录做一些复制工作。 在问这个问题之前,我发现了一些有用但不起作用的东西。

SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)

我收到此错误消息
由以下原因引起:org.gradle.api.UnknownDomainObjectException:未找到名称为“main”的 SourceSet。

最佳答案

首先,该代码不起作用,因为它仅适用于带有 java gradle 插件的 java 项目。所以我用谷歌搜索并找到了一些解决办法。 这是我的代码。

project.afterEvaluate {
    ...
    def sets;
    if (Utils.is140orAbove()) {
        sets = project.android.sourceSets;
    } else {
        sets = project.android.sourceSetsContainer;
    }
    sets.all { AndroidSourceSet sourceSet ->
        if(sourceSet.name.startsWith("main"))
            for(File file:sourceSet.java.getSrcDirs())
                if(file.exists()) {
                    mainSource = file;
                    break;
                }
    }
    ...
}

我的代码并不漂亮。等待更好的答案。

关于gradle - 如何使用 Gradle API 获取 Android Studio 主 SourceSet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37159935/

相关文章:

java - 停止 Eclipse/Gradle 生成 .project 和 .settings/

gradle - 安卓 : run sonarRunner from gradle

git - 如何从另一个项目的仓库中包含一个库模块?

android - com.google.android.gms :play-services-measurement-base is being requested by various other libraries

java - 无法解析符号 'App'

deployment - Bintray:无法创建程序包HTTP/1.1 400错误的请求[消息:许可证 '['不存在]

android - Gradle构建上的Axion发行插件错误

java - Jersey 网络服务器中的 Spring 注入(inject)错误

java - 通过使用<img th:src = “@{/images/anabada.jpeg}”无法加载thyemleaf中的图像

Gradle 插件的传递依赖项干扰和破坏构建