У меня есть проект, в котором я пытаюсь включить один файл из дерева исходных файлов java в проект библиотеки. Что бы я ни делал, я не могу включить только этот файл. У меня был успех в другом проекте, за исключением всех файлов, кроме одного, но который работал только при запуске gradle только из проекта библиотеки. Когда он запускался из каталога приложений, все файлы были включены. При попытке создать простой проект, который воспроизводит проблему, это же исключает, что все тоже не работает.
Дерево образцов файлов прост:
application - android app that includes the two libraries
library1/
build.gradle
src/main/AndroidManifest.xml
library2/
build.gradle
src/main/AndroidManifest.xml
java/src/com/company/product/
/pkg1
Source1.java, Source2.java, Source3.java
libraryoneonly/Library1Source.java
/pkg2
Source1.java, Source2.java, Source3.java
Библиотека1 build.gradle выглядит так. Ни один из них не включает или не включает работу ниже.
Library1/build.gradle
apply plugin: 'com.android.library'
android {
sourceSets {
main.jni.srcDirs = []
main.jniLibs.srcDir 'src/main/libs'
main.java {
srcDir "../../java/src"
exclude { FileTreeElement elem ->
println "Searching for files, found: " + elem.relativePath
!(elem.isDirectory() || elem.name.equals('Library1Source.java'))
}
//include ("**/libraryoneonly/**")
//include ('com/company/product/pkg1/libraryoneonly/Library1Source.java')
}
}
dependencies {
compile project(':library2')
}
И library2 build.gradle. Удивительно, но неудовлетворительное исключение ниже работает.
library2/build.gradle
apply plugin: 'com.android.library'
android {
sourceSets {
main.jni.srcDirs = []
main.jniLibs.srcDir 'src/main/libs'
main.java {
srcDir "../../java/src"
//exclude { FileTreeElement elem -> ((elem.path.contains('/libraryoneonly/')) ) }
exclude ('com/company/product/pkg1/libraryoneonly/Library1Source.java')
}
}
Чтобы заметить, я никогда не вижу текст "Поиск файлов, найденных" при создании библиотеки1. Я не знаю, почему. Я вижу это в более крупном проекте, с которым этот тест был смоделирован, в зависимости от того, где была выполнена сборка.
Если вы хотите вытащить образец проекта и попробовать его, вот ссылка: https://github.com/gbak/gradleTest