我正在为Android Studio开发gradle插件。这是我的问题如何使用Gradle API获取Android Studio主要SourceSet?
我想用java源目录做一些复制。 在提出这个问题之前,我发现了一些有用但不起作用的东西。
SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME)
我收到此错误消息
Caused by: org.gradle.api.UnknownDomainObjectException: SourceSet with name 'main' not found.
答案 0 :(得分:1)
首先,代码不起作用,因为它仅适用于带有java gradle插件的java项目。所以我用Google搜索并找到了解决方法。 这是我的代码。
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;
}
}
...
}
我的代码不漂亮。等待更好的答案。
答案 1 :(得分:0)
project.android.sourceSets.main
的工作原理。请注意,它的类型为AndroidSourceSet
,而不是SourceSet
。但它与基本相同的API,与Android相关的附加功能。
答案 2 :(得分:0)
android.sourceSets.main.java.getSrcDirs()[0].path
这在Android Studio 3.1和更高版本中对我有效