繁体   English   中英

Gradle仅为公共接口生成sources.jar

[英]Gradle generate sources.jar for only public interfaces

我正在开发一个闭源Android库(作为AAR发布),并希望为消费者提供一些javadoc,这需要一个sources.jar。

我知道我可以使用includes 属性或甚至整个包/文件夹来挑选每个文件。

task('androidSourcesJar', type: Jar) {
    classifier = 'sources'
    baseName = artifactBaseName
    from android.sourceSets.main.java.srcDirs
    include ('MyInterface1.kt', 'MyInterface2.kt', 'MyInterface3.kt')
}

相反,有没有办法只包括public类,接口,方法等? 这似乎是一个以前会出现的问题。

你可以尝试添加这样的东西,而不是你的include

from 'src/main/java'
eachFile { currentFile ->
    String contents = new File(currentFile.getSourcePath()).text
    if(!contents.contains("public class")) {
        currentFile.exclude()
    }
}

我不完全确定这是否有效,但它应该让你走上正确的道路,走到你想去的地方。

由于Gradle实际上没有进行任何代码分析,因此您不能简单地说“只包含具有公共类的文件”。 相反,您必须编写一个仅包含公共类的自定义插件,或者执行类似我提供的操作。 它包含源目录中的所有内容,但在每个文件上运行一些代码。 首先,它获取文件的内容,然后检查该文件是否包含public class 如果没有,该文件没有公共类,应该被排除。

希望这可以帮助! 如果您有任何问题,请随时再提问。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM