• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jreleaser / jreleaser / #528

05 Aug 2025 05:40PM UTC coverage: 49.2% (-0.006%) from 49.206%
#528

push

github

aalmiray
feat(packagers): Allow packagers to skip publish step

Closes #1936

34 of 75 new or added lines in 40 files covered. (45.33%)

1 existing line in 1 file now uncovered.

26299 of 53453 relevant lines covered (49.2%)

0.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

62.0
/core/jreleaser-engine/src/main/java/org/jreleaser/packagers/SdkmanPackagerProcessor.java
1
/*
2
 * SPDX-License-Identifier: Apache-2.0
3
 *
4
 * Copyright 2020-2025 The JReleaser authors.
5
 *
6
 * Licensed under the Apache License, Version 2.0 (the "License");
7
 * you may not use this file except in compliance with the License.
8
 * You may obtain a copy of the License at
9
 *
10
 *     https://www.apache.org/licenses/LICENSE-2.0
11
 *
12
 * Unless required by applicable law or agreed to in writing, software
13
 * distributed under the License is distributed on an "AS IS" BASIS,
14
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
 * See the License for the specific language governing permissions and
16
 * limitations under the License.
17
 */
18
package org.jreleaser.packagers;
19

20
import org.jreleaser.bundle.RB;
21
import org.jreleaser.model.Sdkman;
22
import org.jreleaser.model.internal.JReleaserContext;
23
import org.jreleaser.model.internal.distributions.Distribution;
24
import org.jreleaser.model.internal.packagers.SdkmanPackager;
25
import org.jreleaser.model.internal.util.SdkmanHelper;
26
import org.jreleaser.model.spi.packagers.PackagerProcessingException;
27
import org.jreleaser.mustache.TemplateContext;
28
import org.jreleaser.sdk.sdkman.MajorReleaseSdkmanCommand;
29
import org.jreleaser.sdk.sdkman.MinorReleaseSdkmanCommand;
30
import org.jreleaser.sdk.sdkman.SdkmanException;
31

32
import java.util.LinkedHashMap;
33
import java.util.Map;
34

35
import static org.jreleaser.model.Constants.KEY_SDKMAN_CANDIDATE;
36
import static org.jreleaser.model.Constants.KEY_SDKMAN_RELEASE_NOTES_URL;
37
import static org.jreleaser.mustache.Templates.resolveTemplate;
38
import static org.jreleaser.util.StringUtils.isNotBlank;
39

40
/**
41
 * @author Andres Almiray
42
 * @since 0.6.0
43
 */
44
public class SdkmanPackagerProcessor extends AbstractPackagerProcessor<SdkmanPackager> {
45
    public SdkmanPackagerProcessor(JReleaserContext context) {
46
        super(context);
1✔
47
    }
1✔
48

49
    @Override
50
    protected void doPrepareDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
51
        // noop
52
    }
1✔
53

54
    @Override
55
    protected void doPackageDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
56
        // noop
57
    }
1✔
58

59
    @Override
60
    protected void doPublishDistribution(Distribution distribution, TemplateContext props) throws PackagerProcessingException {
61
        if (packager.isSkipPublishing()) {
1✔
NEW
62
            context.getLogger().info(RB.$("packager.skip.publishing"));
×
NEW
63
            return;
×
64
        }
65

66
        SdkmanPackager sdkman = distribution.getSdkman();
1✔
67

68
        Map<String, String> platforms = new LinkedHashMap<>();
1✔
69
        // collect artifacts by supported SDKMAN! platform
70
        SdkmanHelper.collectArtifacts(context, distribution, platforms);
1✔
71

72
        try {
73
            String candidate = isNotBlank(sdkman.getCandidate()) ? sdkman.getCandidate().trim() : context.getModel().getProject().getName();
1✔
74
            String releaseNotesUrl = resolveTemplate(sdkman.getReleaseNotesUrl(), props);
1✔
75

76
            if (sdkman.getCommand() == Sdkman.Command.MAJOR) {
1✔
77
                context.getLogger().info(RB.$("sdkman.publish.major"), candidate);
1✔
78
                MajorReleaseSdkmanCommand.builder(context.asImmutable())
1✔
79
                    .connectTimeout(sdkman.getConnectTimeout())
1✔
80
                    .readTimeout(sdkman.getReadTimeout())
1✔
81
                    .consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerKey())
1✔
82
                    .consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerToken())
1✔
83
                    .candidate(candidate)
1✔
84
                    .version(context.getModel().getProject().getVersion())
1✔
85
                    .platforms(platforms)
1✔
86
                    .releaseNotesUrl(releaseNotesUrl)
1✔
87
                    .dryrun(context.isDryrun())
1✔
88
                    .skipAnnounce(false)
1✔
89
                    .build()
1✔
90
                    .execute();
1✔
91
            } else if (sdkman.getCommand() == Sdkman.Command.MINOR) {
×
92
                context.getLogger().info(RB.$("sdkman.publish.minor"), candidate);
×
93
                MinorReleaseSdkmanCommand.builder(context.asImmutable())
×
94
                    .connectTimeout(sdkman.getConnectTimeout())
×
95
                    .readTimeout(sdkman.getReadTimeout())
×
96
                    .consumerKey(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerKey())
×
97
                    .consumerToken(context.isDryrun() ? "**UNDEFINED**" : sdkman.getConsumerToken())
×
98
                    .candidate(candidate)
×
99
                    .version(context.getModel().getProject().getVersion())
×
100
                    .platforms(platforms)
×
101
                    .releaseNotesUrl(releaseNotesUrl)
×
102
                    .dryrun(context.isDryrun())
×
103
                    .skipAnnounce(false)
×
104
                    .build()
×
105
                    .execute();
×
106
            }
107

108
            sdkman.setPublished(true);
1✔
109
        } catch (SdkmanException e) {
×
110
            throw new PackagerProcessingException(e);
×
111
        }
1✔
112
    }
1✔
113

114
    @Override
115
    protected void fillPackagerProperties(TemplateContext props, Distribution distribution) {
116
        props.set(KEY_SDKMAN_CANDIDATE, packager.getCandidate());
1✔
117
        props.set(KEY_SDKMAN_RELEASE_NOTES_URL, resolveTemplate(packager.getReleaseNotesUrl(), props));
1✔
118
    }
1✔
119
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc