Как уберечь ОСОБЫЕ зависимости? - PullRequest
0 голосов
/ 12 октября 2018

Типичным ответом для uberjar является следующий код:

build.gradle для проекта

manifest {
    attributes("Main-Class": "main.Main" )
}
jar{

    //<editor-fold defaultstate="collapsed" desc="uberjar">
//uberjar start
    from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
        exclude "META-INF/*.SF"
        exclude "META-INF/*.DSA"
        exclude "META-INF/*.RSA"
    }
//uberjar end
    //</editor-fold>
}

Из того, что я наблюдаю, это работает путем помещения всех jar-файлов в maven local.

Как сделать так, чтобы это было ТОЛЬКО для зависимостей или только для тех зависимостей, которые я выбрал?

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете использовать конфигурацию include или exclude (или обе, если это соответствует вашим потребностям), чтобы указать, какие пакеты вы хотите использовать в своем uberjar.

Пример:

task customJar(type: Jar) {
   .....
   exclude('com/somePack/excludePack1/**') 
   exclude('com/somePack/excludePack2/**') 

   include('com/somePack/**')

    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
// this example will include only packages with com/somePack/
// since exclude configuration specifies com/somePack/excludePack1/ and 
// com/somePack/excludePack2/ packages to be excluded. 
// any other packages under com/somePack/ will be included in the jar.

Если вы используете includeон будет содержать только те пакеты, которые соответствуют определениям.

Если вы используете исключение, оно не будет содержать никаких пакетов, которые исключают определения.

Вы можете исключить свои собственные исходные коды, подобные этой.Я предлагаю создать пользовательскую задачу jar и выполнить эту задачу для такого рода вещей.(Например: gradle yourJarTaskName)

...