使用 ant 编译 android 库时排除 java 文件

Exclude java files when compiling an android library using ant

我有一个 android 库项目,它是使用 ant 构建的。一切正常,但我有一些测试 java 文件,我不想将它们包含在生成的 jar 文件中,有人知道如何制作吗?

谢谢!

Android Studio/Gradle 允许您指定 类 从构建中排除;在 Android Studio 中,您可以通过编辑 build.gradle 文件并添加自定义 SourceSet 来排除 类。像这样:

android
{
    compileSdkVersion 20
    buildToolsVersion "20.0.4"

    defaultConfig
    {
        minSdkVersion 19
        targetSdkVersion 19
        packageName "org.google.home"
        testPackageName "org.google.home.test"
    }
    sourceSets
    {
        main
        {
            java
            {
                exclude '**/ClassToExclude.java'
            }
        }
        androidTest
        {
            java
            {
                exclude '**/TestforClassToExclude.java'
            }
        }
    }
}

正如您在上面看到的,您可以排除测试文件(位于您的项目测试目录中)和标准源文件。

编辑

对于 ant 你可以使用类似的东西,称为 fileset 所以指定应该从构建中排除的文件。用户手册有一个很好的部分描述了如何实现这一点: https://ant.apache.org/manual/Types/fileset.html

ant 还提供了一个 <exclude> 标签,您可以使用它来指定要排除的文件:

<exclude name="**/dir_name_to_exclude/**" />

还有一个 Whosebug post 讨论了类似的问题:How to exclude a directory from ant fileset, based on directories contents

我终于在我的 android 项目的 build.xml 中添加了以下行:

<target name="-post-compile">
    <jar destfile="bin/myLibrary.jar">
        <zipfileset src="bin/classes.jar" excludes="com/my/package** com/something/unittest/**"/>
    </jar>
</target>

这将删除不需要的文件并更新 jar 文件