Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

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

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

Чтобы создать 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.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

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

Если вам нужно исключить некоторые .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 репозиториях.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какую задачу нужно определить в Gradle для создания JAR-файла с исходниками?
1 / 5