Почему gradle jar не будет создавать jar, который делает gradle build?

#gradle

#gradle

Вопрос:

В моем проекте Gradle я определяю дополнительный набор исходных текстов.

 sourceSets {
    sample {
        java {
            srcDir 'sample/java'
        }
        compileClasspath  = sourceSets.main.output   sourceSets.main.compileClasspath
    }
}
  

Затем я добавляю задачу:

 task sampleJar(type: Jar) {
    classifier 'sample'
    from sourceSets.sample.output
}

artifacts {
    archives sampleJar
}
  

Если я это сделаю > gradle build , дополнительный файл jar будет собран из дополнительного набора исходных текстов. Однако, если я это сделаю > gradle jar , это не сработает. есть причина, почему?

Когда я просматриваю выходные сообщения, я вижу:

gradle build имеет sampleJar в задачах, которые необходимо выполнить:

но

gradle jar не создает.

Но не уверен, почему?

Ответ №1:

Потому что jar это просто задача, которая собирает основной файл jar.

build с другой стороны, это задача жизненного цикла верхнего уровня, которая зависит от assemble . И assemble документируется как

Зависит от: jar и всех других задач, которые создают артефакты, прикрепленные к конфигурации архивов.

Поскольку ваша sampleJar особенность создает артефакт, прикрепленный к конфигурации архивов, assemble и, следовательно, build зависит от него.