Вы можете попробовать добавить что-то вроде этого вместо вашего include
:
from 'src/main/java'
eachFile { currentFile ->
String contents = new File(currentFile.getSourcePath()).text
if(!contents.contains("public class")) {
currentFile.exclude()
}
}
Я не совсем уверен, работает ли это, но это должно указать вам правильный путь туда, куда вы хотите пойти.
Поскольку Gradle на самом деле не выполняет никакого анализа кода, вы не можете просто сказать «включать только те файлы, которые имеют общедоступные классы». Вместо этого вам нужно либо написать собственный плагин, который будет включать только публичные классы, либо сделать что-то вроде того, что я предоставил. Он включает в себя все из исходного каталога, но запускает немного кода для каждого файла. Сначала он получает содержимое файла, затем проверяет, содержит ли этот файл public class
. Если нет, файл не имеет публичного класса и должен быть исключен.
Надеюсь, это поможет! Не стесняйтесь задавать дополнительные вопросы, если у вас есть какие-либо вопросы.