![](/img/trans.png)
[英]Build sources.jar with .class files rather than .java files in android gradle
[英]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.