Построить Zip-задачу с Gradle, включая выбранные зависимости - PullRequest
0 голосов
/ 14 мая 2019

Я хочу создать артефакт zip / war / jar в Gradle, который включает в себя несколько классов и только необходимые зависимости

У меня есть простая задача почтового индекса, как показано ниже:

 task myZip(type: Zip) {
    from sourceSets.main.output
    include 'com/mypackage/*'   
    archiveName 'myzip.zip'
    }

Теперь я хочу включить несколько зависимостей компиляции Пример скелета build.gradle:

 apply plugin : 'java'
    apply plugin : 'eclipse'
    apply plugin: 'maven-publish'
    repositories{
    }
    configurations
    {
    }
    dependencies
    {
    compile <dependency1>
    compile <dependency2>
    compile <dependency3>
    ...

    compile <dependency20>
    myzipjar <dependency3>
    myzipjar <dependency6>
    myzipjar <dependency13>
    }

И к моей задаче почтового индекса:

task myZip(type: Zip) {
      from sourceSets.main.output
     include 'com/mypackage/*'
    **into 'lib'
    from configurations.myzipjar**   
     archiveName 'myzip.zip'

    }

1 Ответ

0 голосов
/ 16 мая 2019

Решение зависит от необходимых критериев выбора.

Вы можете трактовать Configuration как обычный FileCollection, из которого можно запросить File экземпляров:

configurations.compile.findAll
{
    it.name.startsWith == "required-prefix" // it is an instance of File
}

... или вы можете использовать его getResolvedConfiguration() метод для фильтрации результатов разрешения путем создания Dependency экземпляров:

configurations.compile.resolvedConfiguration.getFiles
{
    it.group == "target-group" // it is an instance of Dependency
}

Или, возможно, вам следует рассмотреть возможность использования отдельной конфигурации, которая будет включена как в конфигурацию compile, так и в задачу yout zip:

configurations
{
    zippableCompile
    compile.extendsFrom zippableCompile
}

dependencies
{
    zippableCompile <...>
}

P. S. Начиная с Gradle 3.4, конфигурация compile устарела, вместо нее используйте implementation.

...