Gradle: Как исключить конкретный пакет из банки?
У нас есть пакет, который связан с некоторыми требованиями, которые были удалены, но мы не хотим обязательно удалять код, потому что в будущем он снова понадобится. Итак, в нашей существующей сборке ant мы просто исключили этот пакет из компиляции в нашу банку. Эти классы не компилируются из-за того, что мы также удалили их зависимости, поэтому они не могут быть включены в сборку.
Я пытаюсь воспроизвести эту функциональность в Gradle следующим образом:
jar {
sourceSets.main.java.srcDirs = ['src', '../otherprojectdir/src']
include (['com/ourcompany/somepackage/activityadapter/**',
...
'com/ourcompany/someotherpackage/**'])
exclude(['com/ourcompany/someotherpackage/polling/**'])
}
Даже при исключении вызова выше (и я попытался его без квадратных скобок, а), Gradle все еще пытаюсь собрать polling
классы, которые вызывают компиляцию неудачи. Как предотвратить Gradle от попыток скомпилировать этот пакет?
Ответы
Ответ 1
Если у вас есть источники, которые вы не хотите компилировать, вам нужно объявить фильтр для источников, а не для файлов классов, которые помещаются в Jar. Что-то вроде:
sourceSets {
main {
java {
include 'com/ourcompany/somepackage/activityadapter/**'
include 'com/ourcompany/someotherpackage/**'
exclude 'com/ourcompany/someotherpackage/polling/**'
}
}
}
Ответ 2
Это решение действительно, если вы не хотите компилировать эти пакеты, но если вы хотите скомпилировать их и исключить из своего JAR, вы можете использовать
// tag::jar[]
jar {
exclude('mi/package/excluded/**')
exclude('mi/package/excluded2/**')
}
// end::jar[]