Вопрос или проблема
У меня есть проект на Java с использованием Gradle. Этот проект собирается Jenkins, и я пытаюсь опубликовать файл sources.jar вместе с .jar файлом библиотеки. Проект собирается с помощью Jenkins, и в журнале Jenkins я вижу, что он отправляет jar файл на сервер Artifactory:
[pool-1-thread-3] Развёртывание артефакта: http://*****/fw-stringutil/main-SNAPSHOT/fw-stringutil-main-SNAPSHOT-sources.jar
Когда я смотрю на сервер Artifactory, я не могу найти исходники для последнего загруженного jar файла. Вместо этого я вижу, что временная метка файла sources.jar от предыдущей загрузки изменилась. Мне кажется, что Artifactory отправляет файл sources.jar с временной меткой предыдущей сборки. Это ошибка или я что-то упускаю?
Нативный интерфейс Artifactory для библиотеки
Вот информация о версиях:
Artifactory: Artifactory OSS Лицензия с открытым исходным кодом 7.90.14 рев
Gradle: 8.9
Плагин Gradle Artifactory: 5.2.3
Jenkins: 2.462.3
Java: 17.0.6 (Azul Systems)
С уважением,
саша
Я уже пытался обновить Artifactory до новейшей версии (7.90.14). Я заметил ту же проблему в версии: 7.84.17
Попробуйте очистить кэш Artifactory. В Artifactory перейдите к кэшируемому файлу и вручную инициируйте “удаление и повторную загрузку” последнего файла sources.jar. Вы также можете попробовать аннулировать кэш для этого репозитория.
Ответ или решение
Проблема перезаписи sources.jar в Artifactory при публикации из Java Gradle проекта
Причина, по которой вы наблюдаете проблему с перезаписью файла sources.jar
в Artifactory вместо автоматического создания нового, может быть связана с несколькими факторами, включая настройки конфигурации Gradle, кэширование в Artifactory и параметры сборки в Jenkins. Давайте рассмотрим это более подробно, чтобы вы могли лучше понять, как исправить ситуацию.
1. Проверьте настройки Gradle
Во-первых, убедитесь, что в вашей конфигурации Gradle правильно указаны настройки для создания и публикации sources.jar
. Обычно это делается через publishing
секцию в вашем build.gradle
файле. Вот пример, который показывает, как это может выглядеть:
plugins {
id 'java'
id 'maven-publish'
}
group = 'your.group.id'
version = 'main-SNAPSHOT'
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
artifact sourceJar { // Убедитесь, что sourceJar настроен
classifier 'sources'
}
}
}
}
task sourceJar(type: Jar) {
from sourceSets.main.allSource
archiveClassifier.set('sources')
}
Убедитесь, что вы используете правильный classifier
для источников.
2. Настройки Jenkins
Поскольку сборка вашего проекта происходит через Jenkins, важно убедиться, что все предыдущие артефакты корректно очищены перед каждой сборкой. Возможно, Jenkins использует старые кэши или артефакты. Убедитесь, что в настройках Jenkins правильно настроена политика очистки.
3. Артефактный репозиторий Artifactory
Artifactory может перезаписывать артефакты, если они имеют одинаковые метаданные. Вы можете попробовать изменить версию сборки или временную метку SNAPSHOT
для каждого уникального завоза, чтобы убедиться, что версионный архив не будет перезаписан.
4. Очищение кэша Artifactory
Как вы уже упоминали, очистка кэша Artifactory может помочь. Если артефакты кэшируются, старые версии могут сохраняться и вы можете не получать обновленные файлы. Для очистки кэша выполните следующие действия:
- Зайдите в интерфейс Artifactory.
- Найдите ваш
sources.jar
. - Удалите старый файл.
- Перезапустите процесс публикации через Jenkins.
Кроме того, вы можете рассмотреть возможность настройки автоматической чистки кэша в конфигурации вашего репозитория в Artifactory.
5. Логи
Не забывайте внимательно просматривать логи Jenkins и Artifactory, чтобы понять, какие именно действия происходят в процессе сборки и публикации. Это поможет выявить, если есть какие-либо ошибки или недочеты в ваших процессах.
Заключение
Если ни один из вышеперечисленных методов не решает вашу проблему, может быть полезно обратиться в техническую поддержку Artifactory или на форумы сообщества. Ваша проблема может быть связана с определенными нюансами конфигурации или багами в самой системе.
Таким образом, проверив настройки публикации в Gradle, убедившись в чистоте артефактов и кэширования Jenkins и Artifactory, вы сможете устранить проблему с перезаписью sources.jar
.
Если у вас остались вопросы, обязательно обращайтесь!