从gradle中的任何进程中排除某些文件夹和文件

时间:2016-08-31 16:40:15

标签: java android android-studio gradle

我有一个针对Android的小项目,并尝试添加一些源文件夹。 使用类似的东西:

sourceSets {
    main.java.srcDirs += '../../some-source-folder/'
}

我也在我的iml文件中添加了这个:

<content url="file://$MODULE_DIR$/../../some-source-folder">
  <sourceFolder url="file://$MODULE_DIR$/../../some-source-folder" isTestSource="false" />
  <excludeFolder url="file://$MODULE_DIR$/../../some-source-folder/sub-folder" />
</content>

现在的问题是,我真的需要排除源文件夹的一些子文件夹&some; source-folder&#39; 在我的iml文件中使用excludeFolder意味着子文件夹不会显示在我的Android stdio中。但它们仍将使用gradle编译。

但是我的gradle文件中没有任何东西可以用java文件排除一些不能编译的子文件夹!

sourceSets {
    main.java.srcDirs += '../../some-source-folder/'
    main {
        java {
            exclude ('../../some-source-folder/some-subfolder', '../../some-source-folder/another-subfolder')

        }
    }
 }

不起作用。

sourceSets {
    main.java.srcDirs += '../../some-source-folder/'
    exclude '../../some-source-folder/some-subfolder'
    exclude '../../some-source-folder/another-subfolder'
 }

也不起作用。

如果我尝试在完全闭包中添加带有排除的东西,例如

compile {
     exclude '../../some-source-folder/some-subfolder'
}

我收到错误

Gradle sync失败:找不到参数[build _....]的方法compile()

我使用

得到类似的错误
 excludes '...'

 exclude = ['....', '....', '....']

会导致错误:

Gradle sync失败:找不到参数的方法排除()...

Gradle sync失败:没有方法签名:java.util.LinkedHashSet.getAt()适用于参数类型:(java.util.ArrayList)值:

是否有一种简单的方法可以将任何源文件夹添加到Android Studio中的项目中并排除几个子文件夹或/和源文件?

1 个答案:

答案 0 :(得分:0)

Since you are using android studio and the android project structure is a bit different, you should use Build Variants and configure a product flavor. Foreach build variant you can configure a source set.

For instance:

src/demoDebug/ (build variant source set)
src/debug/ (build type source set)
src/demo/ (product flavor source set)
src/main/ (main source set)

Check it here: https://developer.android.com/studio/build/build-variants.html#sourcesets