Создание JAR-файла исходников в Gradle для IntelliJ IDEA

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы создать JAR-файл с исходниками в Gradle, определите задачу sourcesJar вот так:

groovy
Скопировать код
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier 'sources'
    from sourceSets.main.allJava
}

Далее, для того, чтобы включить эту задачу в сборку Gradle, добавьте следующее:

groovy
Скопировать код
artifacts {
    archives sourcesJar
}

Тогда Gradle соберёт файлы формата .java в JAR-файл с обозначением sources, который будет потом включен в артефакты вашего проекта.

Кинга Идем в IT: пошаговый план для смены профессии

Расширенные возможности начиная с Gradle 6.0+

С версии 6.0 Gradle предоставляет в java_library плагине возможность упрощённой настройки для быстрого выполнения задачи:

groovy
Скопировать код
java {
    withJavadocJar()
    withSourcesJar()
}

Для автоматизации создания Javadoc и JAR с исходными кодами используйте конфигурацию плагина:

groovy
Скопировать код
plugins {
    `java-library`
}

Детальные настройки

Установка зависимостей задачи

Не забывайте о зависимостях вашего JAR с исходниками. Укажите, какие задачи следует выполнить до его сборки:

groovy
Скопировать код
task sourcesJar(type: Jar, dependsOn: [compileJava, processResources]) {
    archiveClassifier.set('sources')
    from sourceSets.main.allSource
}

Таким образом compileJava и processResources гарантированно выполнятся перед созданием sourcesJar.

Исключение определённых файлов

Если вам нужно исключить некоторые .java файлы из JAR, используйте параметр exclude:

groovy
Скопировать код
task sourcesJar(type: Jar) {
    exclude 'path/to/exclude/**'
    from sourceSets.main.allJava
    classifier 'sources'
}

Настройка classpath для Javadoc

Для корректного доступа к зависимостям в задаче создания Javadoc, установите classpath в этом формате:

groovy
Скопировать код
javadoc.classpath += configurations.compile

Визуализация

Создание JAR-файла с исходными кодами можно аналогично сравнить с приготовлением обеда на день:

Markdown
Скопировать код
// Шаг 1: Выбираем содержимое – всё, что следует упаковать
task('sourceJar', type: Jar) {
    from sourceSets.main.allSource  // 🥪🍏 (Ваши файлы)
}

// Шаг 2: Маркируем коробку для обеда – задаём имя JAR-файлу
sourceJar.archiveClassifier.set('sources')  // 🏷️ 'sources'

// Шаг 3: Упаковываем обед – собираем JAR
artifacts {
    archives sourceJar  // 🍱✅ (Обед готов!)
}

Просто следуйте этим шагам, и ваши исходные коды будут аккуратно упакованы, точно так же как ваш обеденный ланч-бокс! 🍱✅

Тестирование собранного JAR-архива с исходными кодами

Для проверки JAR-файла с исходниками, откройте его в среде разработки, например, в IntelliJ IDEA:

Markdown
Скопировать код
1. Откройте 'Project Structure' в IntelliJ IDEA.
2. Найдите свой проект в разделе 'Libraries'.
3. Добавьте JAR-файл `sources` и начните отладку.

Специфические настройки проекта

Если в проекте есть спецтребования, добавьте конфигурацию, как показано здесь:

groovy
Скопировать код
task sourcesJar(type: Jar) {
    from sourceSets.main.allJava
    classifier 'sources'
    if (project.hasProperty('specialCase')) {
        from 'special/case/path' // "Добавляем специальный компонент!"
    }
}

Решение возможных проблем

В случае возникновения ошибок, проверьте правильность указания classpath и имени архива, также убедитесь в наличии всех необходимых исходников:

groovy
Скопировать код
task sourcesJar(type: Jar) {
    // ...
    doFirst {
        assert sourceSets.main.allJava.files.size() > 0 // "Внимание! Папка с исходниками пуста!"
    }
}

Полезные материалы

  1. The Java Plugin — официальный гайд по работе с Java проектами в Gradle.
  2. Jar – Gradle DSL Version 8.6 — настройки для задачи Jar в Gradle.
  3. Getting started with Build Scan — инструмент для анализа и диагностики сборок Gradle.
  4. How to download dependencies in gradle – Stack Overflow — обсуждение управления зависимостями в сообществе разработчиков.
  5. Structuring Projects with Gradle — руководство по структурированию многопроектных сборок.
  6. Building Java Libraries — пример создания Java библиотек для лучшего понимания.
  7. Maven Publish Plugin — публикация Java артефактов в Maven репозиториях.
Свежие материалы