Подтвердить что ты не робот

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 от попыток скомпилировать этот пакет?

4b9b3361

Ответ 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[]