Используйте gradle bootJar вместо jar задачи и сборка завершается неудачно в Jenkins - PullRequest
0 голосов
/ 01 июня 2018

После того, как я начал использовать плагин gradle для начальной загрузки в моем файле gradle.build, сборка не удалась на jenkins.

classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.2.RELEASE")

Все работает нормально, включая сборку, тестирование и веб-приложение, которое работает нормально с Jetty.Единственной проблемой является сбой сборки на Jenkins в задаче artifactoryPublish.Там написано:

File '/var/lib/jenkins/jobs/release-my-project/workspace/build/libs/workspace-0.2.1-SNAPSHOT.jar' does not exists, and need to be published!

Не уверен, что происходит с задачей gradle artifactoryPublish.Я думаю, что задача исходит от Дженкинса.

Перед использованием плагина gradle.build с пружинной загрузкой моя задача jar в gradle.build выглядит следующим образом:

jar {
    baseName = 'my-project'
    from {
        configurations.compile.collect {
            it.isDirectory() ? it : zipTree(it)
        }
        configurations.runtime.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    manifest {
        attributes 'Main-Class':'com.example.Application'
    }
    // Exclude manifest signature files
    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/LICENSE'
}   

Поскольку плагин gradle пружинной загрузки отключаетЗадача jar и заменяет ее задачей bootJar, поэтому я настроил задачу bootjar следующим образом:

bootJar {
    baseName = 'my-project'
    mainClassName = 'com.example.Application'
    // Exclude manifest signature files
    exclude 'META-INF/*.SF', 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/LICENSE'
}

Одна вещь, которую я заметил из журнала jenkins, - это то, что в нем говорится, что файл workspace-0.2.1-SNAPSHOT.jar не существует.Похоже, что он ищет не тот файл.Ранее он искал правильный файл my-project-0.2.1-SNAPSHOT.jar.Когда я построил локально, этот файл JAR был создан.Не уверен, что заставило Дженкинса искать workspace-0.2.1-SNAPSHOT.jar.Это должно быть my-project, как я определил baseName внутри задачи bootJar.

Есть идеи, что здесь не так?Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Если вы явно не определите имя проекта, Gradle будет использовать имя каталога в качестве имени проекта.На Jenkins каталог проекта называется «рабочая область».artifactoryPublish предположительно использует имя проекта для определения имени файла JAR для публикации.Это не очень хорошая практика, если это так.

В любом случае, вам действительно следует указать название вашего проекта.Тогда вам не придется явно устанавливать baseName для задач Jar.Просто добавьте файл settings.gradle в корневой каталог проекта, т. Е. Рядом с файлом build.gradle , и установите его содержимое:

rootProject.name = "my-project"

Надеемся, что это должно решить проблему, хотя на самом деле это зависит от того, что делает задача artifactoryPublish.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...