簡體   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