• 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

41.94
/core/jreleaser-model-impl/src/main/java/org/jreleaser/model/internal/packagers/JbangPackager.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.model.internal.packagers;
19

20
import com.fasterxml.jackson.annotation.JsonIgnore;
21
import org.jreleaser.model.Active;
22
import org.jreleaser.model.Distribution;
23
import org.jreleaser.model.Stereotype;
24
import org.jreleaser.model.internal.common.Artifact;
25
import org.jreleaser.model.internal.project.Project;
26

27
import java.util.LinkedHashMap;
28
import java.util.List;
29
import java.util.Map;
30
import java.util.Set;
31

32
import static java.util.Collections.emptySet;
33
import static java.util.Collections.unmodifiableList;
34
import static java.util.Collections.unmodifiableMap;
35
import static java.util.Collections.unmodifiableSet;
36
import static org.jreleaser.model.Distribution.DistributionType.JAVA_BINARY;
37
import static org.jreleaser.model.Distribution.DistributionType.JLINK;
38
import static org.jreleaser.model.Distribution.DistributionType.SINGLE_JAR;
39
import static org.jreleaser.model.JReleaserOutput.nag;
40
import static org.jreleaser.model.api.packagers.JbangPackager.TYPE;
41

42
/**
43
 * @author Andres Almiray
44
 * @since 0.1.0
45
 */
46
public final class JbangPackager extends AbstractRepositoryPackager<org.jreleaser.model.api.packagers.JbangPackager, JbangPackager> {
47
    private static final Map<org.jreleaser.model.Distribution.DistributionType, Set<String>> SUPPORTED = new LinkedHashMap<>();
1✔
48
    private static final long serialVersionUID = -781152922661597391L;
49

50
    static {
51
        SUPPORTED.put(JAVA_BINARY, emptySet());
1✔
52
        SUPPORTED.put(JLINK, emptySet());
1✔
53
        SUPPORTED.put(SINGLE_JAR, emptySet());
1✔
54
    }
1✔
55

56
    private final JbangRepository repository = new JbangRepository();
1✔
57
    private String alias;
58

59
    @JsonIgnore
1✔
60
    private final org.jreleaser.model.api.packagers.JbangPackager immutable = new org.jreleaser.model.api.packagers.JbangPackager() {
1✔
61
        private static final long serialVersionUID = -5837545495467382897L;
62

63
        @Override
64
        public String getAlias() {
65
            return alias;
×
66
        }
67

68
        @Override
69
        public org.jreleaser.model.api.packagers.PackagerRepository getRepository() {
70
            return repository.asImmutable();
×
71
        }
72

73
        @Override
74
        public org.jreleaser.model.api.packagers.PackagerRepository getCatalog() {
75
            return getRepository();
×
76
        }
77

78
        @Override
79
        public org.jreleaser.model.api.packagers.PackagerRepository getPackagerRepository() {
80
            return getRepository();
×
81
        }
82

83
        @Override
84
        public org.jreleaser.model.api.common.CommitAuthor getCommitAuthor() {
85
            return JbangPackager.this.getCommitAuthor().asImmutable();
×
86
        }
87

88
        @Override
89
        public String getTemplateDirectory() {
90
            return JbangPackager.this.getTemplateDirectory();
×
91
        }
92

93
        @Override
94
        public List<String> getSkipTemplates() {
95
            return unmodifiableList(JbangPackager.this.getSkipTemplates());
×
96
        }
97

98
        @Override
99
        public String getType() {
100
            return JbangPackager.this.getType();
×
101
        }
102

103
        @Override
104
        public String getDownloadUrl() {
105
            return JbangPackager.this.getDownloadUrl();
×
106
        }
107

108
        @Override
109
        public boolean supportsPlatform(String platform) {
110
            return JbangPackager.this.supportsPlatform(platform);
×
111
        }
112

113
        @Override
114
        public boolean supportsDistribution(Distribution.DistributionType distributionType) {
115
            return JbangPackager.this.supportsDistribution(distributionType);
×
116
        }
117

118
        @Override
119
        public Set<String> getSupportedFileExtensions(Distribution.DistributionType distributionType) {
120
            return JbangPackager.this.getSupportedFileExtensions(distributionType);
×
121
        }
122

123
        @Override
124
        public Set<Stereotype> getSupportedStereotypes() {
125
            return JbangPackager.this.getSupportedStereotypes();
×
126
        }
127

128
        @Override
129
        public boolean isSnapshotSupported() {
130
            return JbangPackager.this.isSnapshotSupported();
×
131
        }
132

133
        @Override
134
        public boolean isContinueOnError() {
135
            return JbangPackager.this.isContinueOnError();
×
136
        }
137

138
        @Override
139
        public boolean isSkipPublishing() {
NEW
140
            return JbangPackager.this.isSkipPublishing();
×
141
        }
142

143
        @Override
144
        public Active getActive() {
145
            return JbangPackager.this.getActive();
×
146
        }
147

148
        @Override
149
        public boolean isEnabled() {
150
            return JbangPackager.this.isEnabled();
×
151
        }
152

153
        @Override
154
        public Map<String, Object> asMap(boolean full) {
155
            return unmodifiableMap(JbangPackager.this.asMap(full));
×
156
        }
157

158
        @Override
159
        public String getPrefix() {
160
            return JbangPackager.this.prefix();
×
161
        }
162

163
        @Override
164
        public Map<String, Object> getExtraProperties() {
165
            return unmodifiableMap(JbangPackager.this.getExtraProperties());
×
166
        }
167
    };
168

169
    public JbangPackager() {
170
        super(TYPE);
1✔
171
    }
1✔
172

173
    @Override
174
    public org.jreleaser.model.api.packagers.JbangPackager asImmutable() {
175
        return immutable;
×
176
    }
177

178
    @Override
179
    public void merge(JbangPackager source) {
180
        super.merge(source);
1✔
181
        this.alias = merge(this.alias, source.alias);
1✔
182
        setRepository(source.repository);
1✔
183
    }
1✔
184

185
    public String getAlias() {
186
        return alias;
×
187
    }
188

189
    public void setAlias(String alias) {
190
        this.alias = alias;
×
191
    }
×
192

193
    public JbangRepository getRepository() {
194
        return repository;
1✔
195
    }
196

197
    public void setRepository(JbangRepository repository) {
198
        this.repository.merge(repository);
1✔
199
    }
1✔
200

201
    @Deprecated
202
    public JbangRepository getCatalog() {
203
        return getRepository();
×
204
    }
205

206
    @Deprecated
207
    public void setCatalog(JbangRepository repository) {
208
        nag("jbang.catalog is deprecated since 1.8.0 and will be removed in 2.0.0. Use jbang.repository instead");
×
209
        setRepository(repository);
×
210
    }
×
211

212
    @Override
213
    protected void asMap(boolean full, Map<String, Object> props) {
214
        super.asMap(full, props);
1✔
215
        props.put("alias", alias);
1✔
216
        props.put("repository", repository.asMap(full));
1✔
217
    }
1✔
218

219
    @Override
220
    public RepositoryTap getRepositoryTap() {
221
        return getRepository();
1✔
222
    }
223

224
    public PackagerRepository getPackagerRepository() {
225
        return getRepository();
×
226
    }
227

228
    @Override
229
    public boolean supportsPlatform(String platform) {
230
        return true;
×
231
    }
232

233
    @Override
234
    public boolean supportsDistribution(org.jreleaser.model.Distribution.DistributionType distributionType) {
235
        return SUPPORTED.containsKey(distributionType);
1✔
236
    }
237

238
    @Override
239
    public Set<String> getSupportedFileExtensions(org.jreleaser.model.Distribution.DistributionType distributionType) {
240
        return unmodifiableSet(SUPPORTED.getOrDefault(distributionType, emptySet()));
×
241
    }
242

243
    @Override
244
    protected boolean isNotSkipped(Artifact artifact) {
245
        return true;
×
246
    }
247

248
    @Override
249
    public boolean isSnapshotSupported() {
250
        return true;
×
251
    }
252

253
    public static final class JbangRepository extends PackagerRepository {
254
        private static final long serialVersionUID = 2261733570528326153L;
255

256
        public JbangRepository() {
257
            super("jbang", "jbang-catalog");
1✔
258
        }
1✔
259

260
        @Override
261
        public String getResolvedName() {
262
            return getTapName();
1✔
263
        }
264

265
        @Override
266
        public boolean resolveEnabledWithSnapshot(Project project) {
267
            enabledSet(null != getActive() && getActive().check(project));
×
268
            return isEnabled();
×
269
        }
270
    }
271
}
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