плагин gradle maven-publish добавляет временную метку, как не ставить суффикс - PullRequest
0 голосов
/ 14 января 2019

Я использую плагин «maven-publish» от gGradle, и он ставит суффикс после реальной версии, чего я хочу избежать. потому что на следующем шаге моего CI он пытается загрузить .jar, а команда curl ничего не загружает.

Я могу подключиться к своему нексусу и загрузить через ./gradlew publish Optional<VERSION=0.0.1>, но в плагин (я думаю) добавлена ​​временная метка, которая выглядит примерно так:

a/b/c/ARTIFACT-NAME/0.0.1-SNAPSHOT/ARTIFACT-NAME-0.0.1-20190114.134142-8.jar

Как отключить функцию метки времени в плагине?

Это мое издательское задание:

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        maven {
            if (project.version.endsWith('-SNAPSHOT')) {
                url deployNexusSnapshotUrl
            } else {
                url deployNexusReleaseUrl
            }
            credentials {
                username = deployNexusUsername
                password = deployNexusPassword
            }
        }
    }
}

1 Ответ

0 голосов
/ 14 января 2019

Это потому, что вы публикуете версию SNAPSHOT. Эта временная метка является функцией, которая позволяет различать различные сборки снимков, например, использовать их в течение ограниченного периода времени и очистить их позже. Этого не произойдет, если вы выпустите правильную версию артефакта, в которой не используется суффикс -SNAPSHOT.

Ради воспроизводимости сборки CI вы никогда не должны использовать SNAPSHOT зависимости при создании программного обеспечения для CI. SNAPSHOT версии могут быть переопределены, особенно если вы отключите отметку времени в версии.

Что, если в вашем проекте не было изменений кода, сборка CI была зеленой, но на следующий день кто-то перезаписал зависимость SNAPSHOT в репозитории, и сборка теперь красная? Что делать, если на следующий день вам нужно выпустить исправление для решения срочной производственной проблемы, но вместо этого вы должны сосредоточиться на проблеме, вызванной новой зависимостью SNAPSHOT.

Вы пытаетесь решить не ту проблему. SNAPSHOT предназначен только для локальной разработки.

...