Создание множественных артефактов для Vaadin-Application [Gradle] - PullRequest
0 голосов
/ 06 февраля 2019

В настоящее время я работаю над проектом Vaadin 8, используя плагин gradle vaadin.

В проекте есть 3 основных SourceSets, a и b.Последние два исключают некоторые виды и особенности.Можно ли построить 3 Artifcats через Gradle один для каждого sourceSet.Я пытался изменить военное задание, но это сломало взгляды.

conf{
    aCompile.extendsFrom compile
    aRuntime.extendsFrom runtime

    bCompile.extendsFrom compile
    bRuntime.extendsFrom runtime
}
 sourceSets {
    main {
        java {
            srcDirs = ['src/main/java', 'src/main/generated']
        }
    }
    a{
        java {
            srcDirs = ['src/main/java', 'src/main/generated']
            exclude 'com/exmaple/features/b'
            exclude 'com/exmaple/views/b'
        }

        compileClasspath += main.output
        runtimeClasspath += main.output

        output.resourcesDir = 'build/resources/main'
        output.classesDir = 'build/classes/java/main'
    }
    b{
        java {
            srcDirs = ['src/main/java', 'src/main/generated']
            exclude 'com/exmaple/features/a'
            exclude 'com/exmaple/views/a'
        }
        compileClasspath += main.output
        runtimeClasspath += main.output

        output.resourcesDir = 'build/resources/main'
        output.classesDir = 'build/classes/java/main'
    }
}
task aWar(type: War) {
    appendix = "a"
    from sourceSets.a.output
}

task bWar(type: War) {
    appendix = "b"
    from sourceSets.b.output
}

1 Ответ

0 голосов
/ 15 апреля 2019

С https://docs.gradle.org/current/userguide/artifact_management.html#sec:declaring_artifacts вы должны иметь возможность объявлять артефакт для каждого исходного набора.

В вашем случае это будет выглядеть примерно так:

task aWar(type: War, dependsOn: classes) {
  baseName = 'a.war'
  classpath = project.configurations.aRuntime
}

task bWar(type: War, dependsOn: classes) {
  baseName = 'b.war'
  classpath = project.configurations.bRuntime
}

artifacts {
   archives aWar, bWar
}

WARЗадача также позволяет включать / исключать классы с помощью регулярных выражений.Оформить заказ на https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.War.html

...