mirror of
https://github.com/ethauvin/bld.git
synced 2025-04-26 00:37:10 -07:00
Added generic version implementation
This commit is contained in:
parent
15be3a2cd7
commit
98e9035c5e
18 changed files with 1357 additions and 207 deletions
|
@ -688,7 +688,7 @@ public class BaseProject extends BuildExecutor {
|
|||
* {@link VersionNumber#UNKNOWN} if the description couldn't be parsed
|
||||
* @since 1.5
|
||||
*/
|
||||
public VersionNumber version(String description) {
|
||||
public Version version(String description) {
|
||||
return VersionNumber.parse(description);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ import java.util.regex.Pattern;
|
|||
* @author Geert Bevin (gbevin[remove] at uwyn dot com)
|
||||
* @since 1.5
|
||||
*/
|
||||
public record Dependency(String groupId, String artifactId, VersionNumber version, String classifier, String type, ExclusionSet exclusions, Dependency parent) {
|
||||
public record Dependency(String groupId, String artifactId, Version version, String classifier, String type, ExclusionSet exclusions, Dependency parent) {
|
||||
public static final String CLASSIFIER_SOURCES = "sources";
|
||||
public static final String CLASSIFIER_JAVADOC = "javadoc";
|
||||
|
||||
|
@ -28,23 +28,23 @@ public record Dependency(String groupId, String artifactId, VersionNumber versio
|
|||
this(groupId, artifactId, null, null, null);
|
||||
}
|
||||
|
||||
public Dependency(String groupId, String artifactId, VersionNumber version) {
|
||||
public Dependency(String groupId, String artifactId, Version version) {
|
||||
this(groupId, artifactId, version, null, null);
|
||||
}
|
||||
|
||||
public Dependency(String groupId, String artifactId, VersionNumber version, String classifier) {
|
||||
public Dependency(String groupId, String artifactId, Version version, String classifier) {
|
||||
this(groupId, artifactId, version, classifier, null);
|
||||
}
|
||||
|
||||
public Dependency(String groupId, String artifactId, VersionNumber version, String classifier, String type) {
|
||||
public Dependency(String groupId, String artifactId, Version version, String classifier, String type) {
|
||||
this(groupId, artifactId, version, classifier, type, null);
|
||||
}
|
||||
|
||||
public Dependency(String groupId, String artifactId, VersionNumber version, String classifier, String type, ExclusionSet exclusions) {
|
||||
public Dependency(String groupId, String artifactId, Version version, String classifier, String type, ExclusionSet exclusions) {
|
||||
this(groupId, artifactId, version, classifier, type, exclusions, null);
|
||||
}
|
||||
|
||||
public Dependency(String groupId, String artifactId, VersionNumber version, String classifier, String type, ExclusionSet exclusions, Dependency parent) {
|
||||
public Dependency(String groupId, String artifactId, Version version, String classifier, String type, ExclusionSet exclusions, Dependency parent) {
|
||||
this.groupId = groupId;
|
||||
this.artifactId = artifactId;
|
||||
this.version = (version == null ? VersionNumber.UNKNOWN : version);
|
||||
|
|
|
@ -78,7 +78,7 @@ public class DependencyResolver {
|
|||
* @return the resolved version
|
||||
* @since 1.5
|
||||
*/
|
||||
public VersionNumber resolveVersion() {
|
||||
public Version resolveVersion() {
|
||||
var version = resolution_.overrideVersion(dependency_);
|
||||
if (version.equals(VersionNumber.UNKNOWN)) {
|
||||
return latestVersion();
|
||||
|
@ -191,7 +191,7 @@ public class DependencyResolver {
|
|||
* couldn't be found in the provided repositories
|
||||
* @since 1.5
|
||||
*/
|
||||
public List<VersionNumber> listVersions() {
|
||||
public List<Version> listVersions() {
|
||||
return getMavenMetadata().getVersions();
|
||||
}
|
||||
|
||||
|
@ -202,7 +202,7 @@ public class DependencyResolver {
|
|||
* if the dependency couldn't be found in the provided repositories
|
||||
* @since 1.5
|
||||
*/
|
||||
public VersionNumber latestVersion() {
|
||||
public Version latestVersion() {
|
||||
return getMavenMetadata().getLatest();
|
||||
}
|
||||
|
||||
|
@ -213,7 +213,7 @@ public class DependencyResolver {
|
|||
* if the dependency couldn't be found in the provided repositories
|
||||
* @since 1.5
|
||||
*/
|
||||
public VersionNumber releaseVersion() {
|
||||
public Version releaseVersion() {
|
||||
return getMavenMetadata().getRelease();
|
||||
}
|
||||
|
||||
|
@ -318,7 +318,7 @@ public class DependencyResolver {
|
|||
|
||||
private List<RepositoryArtifact> getTransferArtifacts() {
|
||||
final var version = resolveVersion();
|
||||
final VersionNumber pom_version;
|
||||
final Version pom_version;
|
||||
if (version.isSnapshot()) {
|
||||
var metadata = getSnapshotMavenMetadata();
|
||||
pom_version = metadata.getSnapshot();
|
||||
|
@ -400,7 +400,7 @@ public class DependencyResolver {
|
|||
|
||||
private List<RepositoryArtifact> getPomLocations() {
|
||||
final var version = resolveVersion();
|
||||
final VersionNumber pom_version;
|
||||
final Version pom_version;
|
||||
if (version.isSnapshot()) {
|
||||
var metadata = getSnapshotMavenMetadata();
|
||||
pom_version = metadata.getSnapshot();
|
||||
|
@ -449,6 +449,11 @@ public class DependencyResolver {
|
|||
}
|
||||
|
||||
var xml = new Xml2MavenPom(parent, resolution_, retriever_, repositories_);
|
||||
// first pass only extracts the properties from the pom
|
||||
if (!xml.processXml(pom)) {
|
||||
throw new DependencyXmlParsingErrorException(dependency_, retrieved_artifact.location(), xml.getErrors());
|
||||
}
|
||||
// second pass parses all the rest so that the properties are available anywhere
|
||||
if (!xml.processXml(pom)) {
|
||||
throw new DependencyXmlParsingErrorException(dependency_, retrieved_artifact.location(), xml.getErrors());
|
||||
}
|
||||
|
|
|
@ -14,28 +14,28 @@ import java.util.List;
|
|||
*/
|
||||
public interface MavenMetadata {
|
||||
/**
|
||||
* Returns latest version number in the metadata.
|
||||
* Returns latest version in the metadata.
|
||||
*
|
||||
* @return the latest version number
|
||||
* @return the latest version
|
||||
* @since 1.5.8
|
||||
*/
|
||||
VersionNumber getLatest();
|
||||
Version getLatest();
|
||||
|
||||
/**
|
||||
* Returns release version number in the metadata.
|
||||
* Returns release version in the metadata.
|
||||
*
|
||||
* @return the release version number
|
||||
* @return the release version
|
||||
* @since 1.5.8
|
||||
*/
|
||||
VersionNumber getRelease();
|
||||
Version getRelease();
|
||||
|
||||
/**
|
||||
* Returns snapshot version number in the metadata.
|
||||
* Returns snapshot version in the metadata.
|
||||
*
|
||||
* @return the snapshot version number
|
||||
* @return the snapshot version
|
||||
* @since 1.5.8
|
||||
*/
|
||||
VersionNumber getSnapshot();
|
||||
Version getSnapshot();
|
||||
|
||||
/**
|
||||
* Returns snapshot timestamp in the metadata.
|
||||
|
@ -56,8 +56,8 @@ public interface MavenMetadata {
|
|||
/**
|
||||
* Returns all the release or snapshot versions in the metadata.
|
||||
*
|
||||
* @return the version number list
|
||||
* @return the version list
|
||||
* @since 1.5.8
|
||||
*/
|
||||
List<VersionNumber> getVersions();
|
||||
List<Version> getVersions();
|
||||
}
|
||||
|
|
49
src/main/java/rife/bld/dependencies/Version.java
Normal file
49
src/main/java/rife/bld/dependencies/Version.java
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Copyright 2001-2023 Geert Bevin (gbevin[remove] at uwyn dot com)
|
||||
* Licensed under the Apache License, Version 2.0 (the "License")
|
||||
*/
|
||||
package rife.bld.dependencies;
|
||||
|
||||
/**
|
||||
* Represents the basic functionality of a dependency version.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public interface Version extends Comparable<Version> {
|
||||
/**
|
||||
* Retrieves the qualifier of the version.
|
||||
*
|
||||
* @return this version's qualifier
|
||||
* @since 2.0
|
||||
*/
|
||||
String qualifier();
|
||||
|
||||
/**
|
||||
* Retrieves the version number with a different qualifier.
|
||||
*
|
||||
* @return this version number with a different qualifier
|
||||
* @since 2.0
|
||||
*/
|
||||
Version withQualifier(String qualifier);
|
||||
|
||||
/**
|
||||
* Indicates whether this is a snapshot version.
|
||||
*
|
||||
* @return {@code true} if this is a snapshot version; or
|
||||
* {@code false} otherwise
|
||||
* @since 2.0
|
||||
*/
|
||||
boolean isSnapshot();
|
||||
|
||||
@Override
|
||||
int compareTo(Version other);
|
||||
|
||||
@Override
|
||||
String toString();
|
||||
|
||||
@Override
|
||||
boolean equals(Object other);
|
||||
|
||||
@Override
|
||||
int hashCode();
|
||||
}
|
374
src/main/java/rife/bld/dependencies/VersionGeneric.java
Normal file
374
src/main/java/rife/bld/dependencies/VersionGeneric.java
Normal file
|
@ -0,0 +1,374 @@
|
|||
/*
|
||||
* Copyright 2001-2023 Geert Bevin (gbevin[remove] at uwyn dot com)
|
||||
* Licensed under the Apache License, Version 2.0 (the "License")
|
||||
*/
|
||||
package rife.bld.dependencies;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.*;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
/**
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
// https://github.com/apache/maven-resolver/blob/98126539f3c66fc4ab50b178c2eb4b8fd169fd72/maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersion.java
|
||||
public class VersionGeneric implements Version {
|
||||
private final String version_;
|
||||
private final List<Item> items_;
|
||||
private final int hash_;
|
||||
|
||||
@Override
|
||||
public String qualifier() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Version withQualifier(String qualifier) {
|
||||
return new VersionGeneric(version_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSnapshot() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a generic version from the specified string.
|
||||
*
|
||||
* @param version The version string, must not be {@code null}.
|
||||
* @since 2.0
|
||||
*/
|
||||
VersionGeneric(String version) {
|
||||
version_ = requireNonNull(version, "version cannot be null");
|
||||
items_ = parse(version);
|
||||
hash_ = items_.hashCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns this instance tokenized representation as unmodifiable list.
|
||||
*
|
||||
* @since 2.0
|
||||
*/
|
||||
public List<Item> asItems() {
|
||||
return items_;
|
||||
}
|
||||
|
||||
private static List<Item> parse(String version) {
|
||||
var items = new ArrayList<Item>();
|
||||
|
||||
for (var tokenizer = new Tokenizer(version); tokenizer.next(); ) {
|
||||
var item = tokenizer.toItem();
|
||||
items.add(item);
|
||||
}
|
||||
|
||||
trimPadding(items);
|
||||
|
||||
return Collections.unmodifiableList(items);
|
||||
}
|
||||
|
||||
/**
|
||||
* Visible for testing.
|
||||
*/
|
||||
public static void trimPadding(List<Item> items) {
|
||||
Boolean number = null;
|
||||
var end = items.size() - 1;
|
||||
for (var i = end; i > 0; i--) {
|
||||
var item = items.get(i);
|
||||
if (!Boolean.valueOf(item.isNumber()).equals(number)) {
|
||||
end = i;
|
||||
number = item.isNumber();
|
||||
}
|
||||
if (end == i
|
||||
&& (i == items.size() - 1 || items.get(i - 1).isNumber() == item.isNumber())
|
||||
&& item.compareTo(null) == 0) {
|
||||
items.remove(i);
|
||||
end--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Version other) {
|
||||
VersionGeneric generic;
|
||||
if (other instanceof VersionGeneric) {
|
||||
generic = (VersionGeneric)other;
|
||||
}
|
||||
else {
|
||||
generic = new VersionGeneric(other.toString());
|
||||
}
|
||||
|
||||
final var these = items_;
|
||||
final var those = generic.items_;
|
||||
|
||||
var number = true;
|
||||
|
||||
for (var index = 0; ; index++) {
|
||||
if (index >= these.size() && index >= those.size()) {
|
||||
return 0;
|
||||
} else if (index >= these.size()) {
|
||||
return -comparePadding(those, index, null);
|
||||
} else if (index >= those.size()) {
|
||||
return comparePadding(these, index, null);
|
||||
}
|
||||
|
||||
var thisItem = these.get(index);
|
||||
var thatItem = those.get(index);
|
||||
|
||||
if (thisItem.isNumber() != thatItem.isNumber()) {
|
||||
if (index == 0) {
|
||||
return thisItem.compareTo(thatItem);
|
||||
}
|
||||
if (number == thisItem.isNumber()) {
|
||||
return comparePadding(these, index, number);
|
||||
} else {
|
||||
return -comparePadding(those, index, number);
|
||||
}
|
||||
} else {
|
||||
var rel = thisItem.compareTo(thatItem);
|
||||
if (rel != 0) {
|
||||
return rel;
|
||||
}
|
||||
number = thisItem.isNumber();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static int comparePadding(List<Item> items, int index, Boolean number) {
|
||||
var rel = 0;
|
||||
for (var i = index; i < items.size(); i++) {
|
||||
var item = items.get(i);
|
||||
if (number != null && number != item.isNumber()) {
|
||||
// do not stop here, but continue, skipping non-number members
|
||||
continue;
|
||||
}
|
||||
rel = item.compareTo(null);
|
||||
if (rel != 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return rel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj instanceof VersionGeneric) && compareTo((VersionGeneric) obj) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return hash_;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return version_;
|
||||
}
|
||||
|
||||
static final class Tokenizer {
|
||||
private static final Integer QUALIFIER_ALPHA = -5;
|
||||
private static final Integer QUALIFIER_BETA = -4;
|
||||
private static final Integer QUALIFIER_MILESTONE = -3;
|
||||
private static final Map<String, Integer> QUALIFIERS;
|
||||
|
||||
static {
|
||||
QUALIFIERS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
|
||||
QUALIFIERS.put("alpha", QUALIFIER_ALPHA);
|
||||
QUALIFIERS.put("beta", QUALIFIER_BETA);
|
||||
QUALIFIERS.put("milestone", QUALIFIER_MILESTONE);
|
||||
QUALIFIERS.put("cr", -2);
|
||||
QUALIFIERS.put("rc", -2);
|
||||
QUALIFIERS.put("snapshot", -1);
|
||||
QUALIFIERS.put("ga", 0);
|
||||
QUALIFIERS.put("final", 0);
|
||||
QUALIFIERS.put("release", 0);
|
||||
QUALIFIERS.put("", 0);
|
||||
QUALIFIERS.put("sp", 1);
|
||||
}
|
||||
|
||||
private final String version_;
|
||||
private final int versionLength_;
|
||||
private int index_;
|
||||
private String token_;
|
||||
private boolean number_;
|
||||
private boolean terminatedByNumber_;
|
||||
|
||||
Tokenizer(String version) {
|
||||
version_ = (!version.isEmpty()) ? version : "0";
|
||||
versionLength_ = this.version_.length();
|
||||
}
|
||||
|
||||
public boolean next() {
|
||||
if (index_ >= versionLength_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var state = -2;
|
||||
|
||||
var start = index_;
|
||||
var end = versionLength_;
|
||||
terminatedByNumber_ = false;
|
||||
|
||||
for (; index_ < versionLength_; index_++) {
|
||||
var c = version_.charAt(index_);
|
||||
|
||||
if (c == '.' || c == '-' || c == '_') {
|
||||
end = index_;
|
||||
index_++;
|
||||
break;
|
||||
} else {
|
||||
var digit = Character.digit(c, 10);
|
||||
if (digit >= 0) {
|
||||
if (state == -1) {
|
||||
end = index_;
|
||||
terminatedByNumber_ = true;
|
||||
break;
|
||||
}
|
||||
if (state == 0) {
|
||||
// normalize numbers and strip leading zeros (prereq for Integer/BigInteger handling)
|
||||
start++;
|
||||
}
|
||||
state = (state > 0 || digit > 0) ? 1 : 0;
|
||||
} else {
|
||||
if (state >= 0) {
|
||||
end = index_;
|
||||
break;
|
||||
}
|
||||
state = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (end - start > 0) {
|
||||
token_ = version_.substring(start, end);
|
||||
number_ = state >= 0;
|
||||
} else {
|
||||
token_ = "0";
|
||||
number_ = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.valueOf(token_);
|
||||
}
|
||||
|
||||
public Item toItem() {
|
||||
if (number_) {
|
||||
try {
|
||||
if (token_.length() < 10) {
|
||||
return new Item(Item.KIND_INT, Integer.parseInt(token_));
|
||||
} else {
|
||||
return new Item(Item.KIND_BIGINT, new BigInteger(token_));
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
throw new IllegalStateException(e);
|
||||
}
|
||||
} else {
|
||||
if (index_ >= version_.length()) {
|
||||
if ("min".equalsIgnoreCase(token_)) {
|
||||
return Item.MIN;
|
||||
} else if ("max".equalsIgnoreCase(token_)) {
|
||||
return Item.MAX;
|
||||
}
|
||||
}
|
||||
if (terminatedByNumber_ && token_.length() == 1) {
|
||||
switch (token_.charAt(0)) {
|
||||
case 'a':
|
||||
case 'A':
|
||||
return new Item(Item.KIND_QUALIFIER, QUALIFIER_ALPHA);
|
||||
case 'b':
|
||||
case 'B':
|
||||
return new Item(Item.KIND_QUALIFIER, QUALIFIER_BETA);
|
||||
case 'm':
|
||||
case 'M':
|
||||
return new Item(Item.KIND_QUALIFIER, QUALIFIER_MILESTONE);
|
||||
default:
|
||||
}
|
||||
}
|
||||
var qualifier = QUALIFIERS.get(token_);
|
||||
if (qualifier != null) {
|
||||
return new Item(Item.KIND_QUALIFIER, qualifier);
|
||||
} else {
|
||||
return new Item(Item.KIND_STRING, token_.toLowerCase(Locale.ENGLISH));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final class Item {
|
||||
static final int KIND_MAX = 8;
|
||||
static final int KIND_BIGINT = 5;
|
||||
static final int KIND_INT = 4;
|
||||
static final int KIND_STRING = 3;
|
||||
static final int KIND_QUALIFIER = 2;
|
||||
static final int KIND_MIN = 0;
|
||||
static final Item MAX = new Item(KIND_MAX, "max");
|
||||
static final Item MIN = new Item(KIND_MIN, "min");
|
||||
|
||||
private final int kind_;
|
||||
private final Object value_;
|
||||
|
||||
Item(int kind, Object value) {
|
||||
kind_ = kind;
|
||||
value_ = value;
|
||||
}
|
||||
|
||||
public boolean isNumber() {
|
||||
return (kind_ & KIND_QUALIFIER) == 0; // i.e. kind != string/qualifier
|
||||
}
|
||||
|
||||
public int compareTo(Item that) {
|
||||
int rel;
|
||||
if (that == null) {
|
||||
// null in this context denotes the pad item (0 or "ga")
|
||||
rel = switch (kind_) {
|
||||
case KIND_MIN -> -1;
|
||||
case KIND_MAX, KIND_BIGINT, KIND_STRING -> 1;
|
||||
case KIND_INT, KIND_QUALIFIER -> (Integer) value_;
|
||||
default -> throw new IllegalStateException("unknown version item kind " + kind_);
|
||||
};
|
||||
} else {
|
||||
rel = kind_ - that.kind_;
|
||||
if (rel == 0) {
|
||||
switch (kind_) {
|
||||
case KIND_MAX:
|
||||
case KIND_MIN:
|
||||
break;
|
||||
case KIND_BIGINT:
|
||||
rel = ((BigInteger) value_).compareTo((BigInteger) that.value_);
|
||||
break;
|
||||
case KIND_INT:
|
||||
case KIND_QUALIFIER:
|
||||
rel = ((Integer) value_).compareTo((Integer) that.value_);
|
||||
break;
|
||||
case KIND_STRING:
|
||||
rel = ((String) value_).compareToIgnoreCase((String) that.value_);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException("unknown version item kind " + kind_);
|
||||
}
|
||||
}
|
||||
}
|
||||
return rel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return (obj instanceof Item) && compareTo((Item) obj) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return value_.hashCode() + kind_ * 31;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return String.valueOf(value_);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@ import java.util.regex.Pattern;
|
|||
* @author Geert Bevin (gbevin[remove] at uwyn dot com)
|
||||
* @since 1.5
|
||||
*/
|
||||
public record VersionNumber(Integer major, Integer minor, Integer revision, String qualifier, String separator) implements Comparable<VersionNumber> {
|
||||
public record VersionNumber(Integer major, Integer minor, Integer revision, String qualifier, String separator) implements Version {
|
||||
public static final String SNAPSHOT_QUALIFIER = "SNAPSHOT";
|
||||
|
||||
/**
|
||||
|
@ -44,14 +44,14 @@ public record VersionNumber(Integer major, Integer minor, Integer revision, Stri
|
|||
* {@link VersionNumber#UNKNOWN} when the string couldn't be parsed
|
||||
* @since 1.5
|
||||
*/
|
||||
public static VersionNumber parse(String version) {
|
||||
public static Version parse(String version) {
|
||||
if (version == null || version.isEmpty()) {
|
||||
return UNKNOWN;
|
||||
}
|
||||
|
||||
var matcher = VERSION_PATTERN.matcher(version);
|
||||
if (!matcher.matches()) {
|
||||
return UNKNOWN;
|
||||
return new VersionGeneric(version);
|
||||
}
|
||||
|
||||
var major = matcher.group("major");
|
||||
|
@ -142,13 +142,8 @@ public record VersionNumber(Integer major, Integer minor, Integer revision, Stri
|
|||
return new VersionNumber(major, minor, revision, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the version number with a different qualifier.
|
||||
*
|
||||
* @return this version number with a different qualifier
|
||||
* @since 1.5.8
|
||||
*/
|
||||
public VersionNumber withQualifier(String qualifier) {
|
||||
@Override
|
||||
public Version withQualifier(String qualifier) {
|
||||
return new VersionNumber(major, minor, revision, qualifier);
|
||||
}
|
||||
|
||||
|
@ -182,37 +177,35 @@ public record VersionNumber(Integer major, Integer minor, Integer revision, Stri
|
|||
return revision == null ? 0 : revision;
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates whether this is a snapshot version.
|
||||
*
|
||||
* @return {@code true} if this is a snapshot version; or
|
||||
* {@code false} otherwise
|
||||
* @since 1.5.8
|
||||
*/
|
||||
public boolean isSnapshot() {
|
||||
return qualifier().toUpperCase().contains(SNAPSHOT_QUALIFIER);
|
||||
}
|
||||
|
||||
public int compareTo(VersionNumber other) {
|
||||
if (majorInt() != other.majorInt()) {
|
||||
return majorInt() - other.majorInt();
|
||||
}
|
||||
if (minorInt() != other.minorInt()) {
|
||||
return minorInt() - other.minorInt();
|
||||
}
|
||||
if (revisionInt() != other.revisionInt()) {
|
||||
return revisionInt() - other.revisionInt();
|
||||
@Override
|
||||
public int compareTo(Version other) {
|
||||
if (other instanceof VersionNumber otherNumber) {
|
||||
if (majorInt() != otherNumber.majorInt()) {
|
||||
return majorInt() - otherNumber.majorInt();
|
||||
}
|
||||
if (minorInt() != otherNumber.minorInt()) {
|
||||
return minorInt() - otherNumber.minorInt();
|
||||
}
|
||||
if (revisionInt() != otherNumber.revisionInt()) {
|
||||
return revisionInt() - otherNumber.revisionInt();
|
||||
}
|
||||
|
||||
if (qualifier.equals(otherNumber.qualifier)) {
|
||||
return 0;
|
||||
} else if (qualifier.isEmpty()) {
|
||||
return 1;
|
||||
} else if (otherNumber.qualifier.isEmpty()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return qualifier.toLowerCase().compareTo(otherNumber.qualifier.toLowerCase());
|
||||
}
|
||||
|
||||
if (qualifier.equals(other.qualifier)) {
|
||||
return 0;
|
||||
} else if (qualifier.isEmpty()) {
|
||||
return 1;
|
||||
} else if (other.qualifier.isEmpty()) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return qualifier.toLowerCase().compareTo(other.qualifier.toLowerCase());
|
||||
return toString().compareTo(other.toString());
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
|
@ -235,7 +228,7 @@ public record VersionNumber(Integer major, Integer minor, Integer revision, Stri
|
|||
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
return other instanceof VersionNumber && compareTo((VersionNumber) other) == 0;
|
||||
return other instanceof Version && compareTo((Version) other) == 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -36,7 +36,7 @@ public class VersionResolution {
|
|||
*/
|
||||
public static final String PROPERTY_OVERRIDE_PREFIX = "bld.override";
|
||||
|
||||
private final Map<String, VersionNumber> versionOverrides_ = new HashMap<>();
|
||||
private final Map<String, Version> versionOverrides_ = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Returns a dummy {@code VersionResolution} instance that doesn't override anything.
|
||||
|
@ -49,7 +49,7 @@ public class VersionResolution {
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates a new instance of the {@code VersionReslution} class from hierarchical properties that
|
||||
* Creates a new instance of the {@code VersionResolution} class from hierarchical properties that
|
||||
* are passed in.
|
||||
* <p>
|
||||
* The actual version overrides are determined at instantiation time and any future changes to the
|
||||
|
@ -83,7 +83,7 @@ public class VersionResolution {
|
|||
* @return the overridden version if it is available; or the original version otherwise
|
||||
* @since 2.0
|
||||
*/
|
||||
public VersionNumber overrideVersion(Dependency original) {
|
||||
public Version overrideVersion(Dependency original) {
|
||||
var overridden = versionOverrides_.get(original.toArtifactString());
|
||||
if (overridden == null) {
|
||||
return original.version();
|
||||
|
@ -119,7 +119,7 @@ public class VersionResolution {
|
|||
* @return the map of version overrides
|
||||
* @since 2.0
|
||||
*/
|
||||
public Map<String, VersionNumber> versionOverrides() {
|
||||
public Map<String, Version> versionOverrides() {
|
||||
return versionOverrides_;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,10 +18,10 @@ import java.util.regex.Pattern;
|
|||
* @since 1.5.8
|
||||
*/
|
||||
public class Xml2MavenMetadata extends Xml2Data implements MavenMetadata {
|
||||
private VersionNumber latest_ = VersionNumber.UNKNOWN;
|
||||
private VersionNumber release_ = VersionNumber.UNKNOWN;
|
||||
private final List<VersionNumber> versions_;
|
||||
private VersionNumber snapshot_ = VersionNumber.UNKNOWN;
|
||||
private Version latest_ = VersionNumber.UNKNOWN;
|
||||
private Version release_ = VersionNumber.UNKNOWN;
|
||||
private final List<Version> versions_;
|
||||
private Version snapshot_ = VersionNumber.UNKNOWN;
|
||||
|
||||
private StringBuilder characterData_ = null;
|
||||
|
||||
|
@ -33,15 +33,15 @@ public class Xml2MavenMetadata extends Xml2Data implements MavenMetadata {
|
|||
versions_ = new ArrayList<>();
|
||||
}
|
||||
|
||||
public VersionNumber getLatest() {
|
||||
public Version getLatest() {
|
||||
return latest_;
|
||||
}
|
||||
|
||||
public VersionNumber getRelease() {
|
||||
public Version getRelease() {
|
||||
return release_;
|
||||
}
|
||||
|
||||
public VersionNumber getSnapshot() {
|
||||
public Version getSnapshot() {
|
||||
return snapshot_;
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ public class Xml2MavenMetadata extends Xml2Data implements MavenMetadata {
|
|||
return snapshotBuildNumber_;
|
||||
}
|
||||
|
||||
public List<VersionNumber> getVersions() {
|
||||
public List<Version> getVersions() {
|
||||
return versions_;
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ public class Xml2MavenMetadata extends Xml2Data implements MavenMetadata {
|
|||
if (snapshotTimestamp_ != null && snapshotBuildNumber_ != null) {
|
||||
qualifier = snapshotTimestamp_ + "-" + snapshotBuildNumber_;
|
||||
}
|
||||
snapshot_ = new VersionNumber(version.major(), version.minor(), version.revision(), qualifier);
|
||||
snapshot_ = version.withQualifier(qualifier);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ class Xml2MavenPom extends Xml2Data {
|
|||
private final Stack<String> elementStack_ = new Stack<>();
|
||||
private ExclusionSet exclusions_ = null;
|
||||
|
||||
private boolean initialParse_ = true;
|
||||
private boolean collectProperties_ = false;
|
||||
private boolean collectDependencyManagement_ = false;
|
||||
private boolean collectDependencies_ = false;
|
||||
|
@ -142,32 +143,36 @@ class Xml2MavenPom extends Xml2Data {
|
|||
public void startElement(String uri, String localName, String qName, Attributes attributes) {
|
||||
characterData_ = new StringBuilder();
|
||||
|
||||
switch (qName) {
|
||||
case "parent" -> resetState();
|
||||
case "properties" -> {
|
||||
if (initialParse_) {
|
||||
if (qName.equals("properties")) {
|
||||
if (isChildOfProject()) {
|
||||
collectProperties_ = true;
|
||||
}
|
||||
}
|
||||
case "dependencyManagement" -> {
|
||||
if (isChildOfProject()) {
|
||||
collectDependencyManagement_ = true;
|
||||
}
|
||||
else {
|
||||
switch (qName) {
|
||||
case "parent" -> resetState();
|
||||
case "dependencyManagement" -> {
|
||||
if (isChildOfProject()) {
|
||||
collectDependencyManagement_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
case "dependencies" -> {
|
||||
if (isChildOfProject()) {
|
||||
resetState();
|
||||
collectDependencies_ = true;
|
||||
case "dependencies" -> {
|
||||
if (isChildOfProject()) {
|
||||
resetState();
|
||||
collectDependencies_ = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
case "exclusions" -> {
|
||||
if (collectDependencyManagement_ || collectDependencies_) {
|
||||
collectExclusions_ = true;
|
||||
exclusions_ = new ExclusionSet();
|
||||
case "exclusions" -> {
|
||||
if (collectDependencyManagement_ || collectDependencies_) {
|
||||
collectExclusions_ = true;
|
||||
exclusions_ = new ExclusionSet();
|
||||
}
|
||||
}
|
||||
case "dependency" -> {
|
||||
if (collectDependencies_) resetState();
|
||||
}
|
||||
}
|
||||
case "dependency" -> {
|
||||
if (collectDependencies_) resetState();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,110 +182,117 @@ class Xml2MavenPom extends Xml2Data {
|
|||
public void endElement(String uri, String localName, String qName) {
|
||||
elementStack_.pop();
|
||||
|
||||
switch (qName) {
|
||||
case "parent" -> {
|
||||
if (isChildOfProject()) {
|
||||
var parent_dependency = new Dependency(resolveMavenProperties(lastGroupId_), resolveMavenProperties(lastArtifactId_), VersionNumber.parse(resolveMavenProperties(lastVersion_)));
|
||||
var parent = new DependencyResolver(resolution_, retriever_, repositories_, parent_dependency).getMavenPom(parent_);
|
||||
if (initialParse_) {
|
||||
switch (qName) {
|
||||
case "properties" -> collectProperties_ = false;
|
||||
case "project" -> initialParse_ = false;
|
||||
default -> {
|
||||
if (collectProperties_) {
|
||||
mavenProperties_.put(qName, getCharacterData());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
switch (qName) {
|
||||
case "parent" -> {
|
||||
if (isChildOfProject()) {
|
||||
var parent_dependency = new Dependency(resolveMavenProperties(lastGroupId_), resolveMavenProperties(lastArtifactId_), VersionNumber.parse(resolveMavenProperties(lastVersion_)));
|
||||
var parent = new DependencyResolver(resolution_, retriever_, repositories_, parent_dependency).getMavenPom(parent_);
|
||||
|
||||
parent.mavenProperties_.keySet().removeAll(mavenProperties_.keySet());
|
||||
mavenProperties_.putAll(parent.mavenProperties_);
|
||||
parent.mavenProperties_.keySet().removeAll(mavenProperties_.keySet());
|
||||
mavenProperties_.putAll(parent.mavenProperties_);
|
||||
|
||||
parent.dependencyManagement_.keySet().removeAll(dependencyManagement_.keySet());
|
||||
dependencyManagement_.putAll(parent.dependencyManagement_);
|
||||
parent.dependencyManagement_.keySet().removeAll(dependencyManagement_.keySet());
|
||||
dependencyManagement_.putAll(parent.dependencyManagement_);
|
||||
|
||||
parent.dependencies_.removeAll(dependencies_);
|
||||
dependencies_.addAll(parent.dependencies_);
|
||||
parent.dependencies_.removeAll(dependencies_);
|
||||
dependencies_.addAll(parent.dependencies_);
|
||||
|
||||
resetState();
|
||||
}
|
||||
}
|
||||
case "dependencyManagement" -> collectDependencyManagement_ = false;
|
||||
case "dependencies" -> collectDependencies_ = false;
|
||||
case "exclusions" -> collectExclusions_ = false;
|
||||
case "exclusion" -> {
|
||||
if (collectExclusions_) {
|
||||
exclusions_.add(new DependencyExclusion(lastExclusionGroupId_, lastExclusionArtifactId_));
|
||||
}
|
||||
}
|
||||
case "dependency" -> {
|
||||
var dependency = new PomDependency(lastGroupId_, lastArtifactId_, lastVersion_, lastClassifier_, lastType_, lastScope_, lastOptional_, exclusions_, parent_);
|
||||
if (collectDependencyManagement_) {
|
||||
if (dependency.isPomImport()) {
|
||||
var import_dependency = new Dependency(resolveMavenProperties(lastGroupId_), resolveMavenProperties(lastArtifactId_), VersionNumber.parse(resolveMavenProperties(lastVersion_)));
|
||||
var imported_pom = new DependencyResolver(resolution_, retriever_, repositories_, import_dependency).getMavenPom(parent_);
|
||||
imported_pom.dependencyManagement_.keySet().removeAll(dependencyManagement_.keySet());
|
||||
var resolved_dependencies = new LinkedHashSet<PomDependency>();
|
||||
for (var managed_dependency : imported_pom.dependencyManagement_.keySet()) {
|
||||
resolved_dependencies.add(imported_pom.resolveDependency(managed_dependency));
|
||||
}
|
||||
|
||||
resolved_dependencies.removeAll(dependencyManagement_.keySet());
|
||||
for (var resolved_dependency : resolved_dependencies) {
|
||||
dependencyManagement_.put(resolved_dependency, resolved_dependency);
|
||||
}
|
||||
} else {
|
||||
dependencyManagement_.put(dependency, dependency);
|
||||
}
|
||||
} else if (collectDependencies_) {
|
||||
dependencies_.add(dependency);
|
||||
}
|
||||
resetState();
|
||||
}
|
||||
}
|
||||
case "properties" -> collectProperties_ = false;
|
||||
case "dependencyManagement" -> collectDependencyManagement_ = false;
|
||||
case "dependencies" -> collectDependencies_ = false;
|
||||
case "exclusions" -> collectExclusions_ = false;
|
||||
case "exclusion" -> {
|
||||
if (collectExclusions_) {
|
||||
exclusions_.add(new DependencyExclusion(lastExclusionGroupId_, lastExclusionArtifactId_));
|
||||
}
|
||||
}
|
||||
case "dependency" -> {
|
||||
var dependency = new PomDependency(lastGroupId_, lastArtifactId_, lastVersion_, lastClassifier_, lastType_, lastScope_, lastOptional_, exclusions_, parent_);
|
||||
if (collectDependencyManagement_) {
|
||||
if (dependency.isPomImport()) {
|
||||
var import_dependency = new Dependency(resolveMavenProperties(lastGroupId_), resolveMavenProperties(lastArtifactId_), VersionNumber.parse(resolveMavenProperties(lastVersion_)));
|
||||
var imported_pom = new DependencyResolver(resolution_, retriever_, repositories_, import_dependency).getMavenPom(parent_);
|
||||
imported_pom.dependencyManagement_.keySet().removeAll(dependencyManagement_.keySet());
|
||||
var resolved_dependencies = new LinkedHashSet<PomDependency>();
|
||||
for (var managed_dependency : imported_pom.dependencyManagement_.keySet()) {
|
||||
resolved_dependencies.add(imported_pom.resolveDependency(managed_dependency));
|
||||
}
|
||||
|
||||
resolved_dependencies.removeAll(dependencyManagement_.keySet());
|
||||
for (var resolved_dependency : resolved_dependencies) {
|
||||
dependencyManagement_.put(resolved_dependency, resolved_dependency);
|
||||
}
|
||||
} else {
|
||||
dependencyManagement_.put(dependency, dependency);
|
||||
case "groupId" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastGroupId_ = getCharacterData();
|
||||
} else if (collectExclusions_ && isChildOfExclusion()) {
|
||||
lastExclusionGroupId_ = getCharacterData();
|
||||
}
|
||||
} else if (collectDependencies_) {
|
||||
dependencies_.add(dependency);
|
||||
}
|
||||
resetState();
|
||||
}
|
||||
case "groupId" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastGroupId_ = getCharacterData();
|
||||
} else if (collectExclusions_ && isChildOfExclusion()) {
|
||||
lastExclusionGroupId_ = getCharacterData();
|
||||
case "artifactId" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastArtifactId_ = getCharacterData();
|
||||
} else if (collectExclusions_ && isChildOfExclusion()) {
|
||||
lastExclusionArtifactId_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "artifactId" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastArtifactId_ = getCharacterData();
|
||||
} else if (collectExclusions_ && isChildOfExclusion()) {
|
||||
lastExclusionArtifactId_ = getCharacterData();
|
||||
case "version" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastVersion_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "version" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
} else if (isChildOfParent() || isChildOfDependency()) {
|
||||
lastVersion_ = getCharacterData();
|
||||
case "type" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastType_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "type" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastType_ = getCharacterData();
|
||||
case "classifier" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastClassifier_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "classifier" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastClassifier_ = getCharacterData();
|
||||
case "scope" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastScope_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "scope" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastScope_ = getCharacterData();
|
||||
case "optional" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastOptional_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
}
|
||||
case "optional" -> {
|
||||
if (isChildOfDependency()) {
|
||||
lastOptional_ = getCharacterData();
|
||||
}
|
||||
}
|
||||
case "packaging", "name", "description", "url", "inceptionYear" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
}
|
||||
}
|
||||
default -> {
|
||||
if (collectProperties_) {
|
||||
mavenProperties_.put(qName, getCharacterData());
|
||||
case "packaging", "name", "description", "url", "inceptionYear" -> {
|
||||
if (isChildOfProject()) {
|
||||
addProjectProperty(qName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ package rife.bld.operations;
|
|||
|
||||
import rife.bld.BldVersion;
|
||||
import rife.bld.Project;
|
||||
import rife.bld.dependencies.VersionNumber;
|
||||
import rife.bld.operations.exceptions.OperationOptionException;
|
||||
import rife.bld.wrapper.Wrapper;
|
||||
import rife.template.TemplateFactory;
|
||||
|
@ -228,9 +229,15 @@ public abstract class AbstractCreateOperation<T extends AbstractCreateOperation<
|
|||
build_template.setValue("groupId", dependency.groupId());
|
||||
build_template.setValue("artifactId", dependency.artifactId());
|
||||
var version = dependency.version();
|
||||
var version_string = version.major() + "," + version.minor() + "," + version.revision();
|
||||
if (!version.qualifier().isEmpty()) {
|
||||
version_string += ",\"" + version.qualifier() + "\"";
|
||||
var version_string = "";
|
||||
if (version instanceof VersionNumber versionNumber) {
|
||||
version_string = versionNumber.major() + "," + versionNumber.minor() + "," + versionNumber.revision();
|
||||
if (!version.qualifier().isEmpty()) {
|
||||
version_string += ",\"" + version.qualifier() + "\"";
|
||||
}
|
||||
}
|
||||
else {
|
||||
version_string = "\"" + version.toString() + "\"";
|
||||
}
|
||||
build_template.setValue("version", version_string);
|
||||
build_template.appendBlock("dependencies", "dependency");
|
||||
|
|
|
@ -113,13 +113,13 @@ public class PublishOperation extends AbstractOperation<PublishOperation> {
|
|||
*
|
||||
* @param repository the repository to publish to
|
||||
* @param moment the timestamp at which the operation started executing
|
||||
* @return the adapted version number with the snapshot timestamp and build number
|
||||
* @return the adapted version with the snapshot timestamp and build number
|
||||
* @since 1.5.10
|
||||
*/
|
||||
protected VersionNumber executePublishSnapshotMetadata(Repository repository, ZonedDateTime moment) {
|
||||
protected Version executePublishSnapshotMetadata(Repository repository, ZonedDateTime moment) {
|
||||
var metadata = new MetadataBuilder();
|
||||
|
||||
VersionNumber actual_version;
|
||||
Version actual_version;
|
||||
if (repository.isLocal()) {
|
||||
actual_version = info().version();
|
||||
metadata.snapshotLocal();
|
||||
|
@ -172,7 +172,7 @@ public class PublishOperation extends AbstractOperation<PublishOperation> {
|
|||
* @param actualVersion the version that was potentially adapted if this is a snapshot
|
||||
* @since 1.5.10
|
||||
*/
|
||||
protected void executePublishArtifacts(Repository repository, VersionNumber actualVersion) {
|
||||
protected void executePublishArtifacts(Repository repository, Version actualVersion) {
|
||||
// upload artifacts
|
||||
for (var artifact : artifacts()) {
|
||||
var artifact_name = new StringBuilder(info().artifactId()).append('-').append(actualVersion);
|
||||
|
@ -196,7 +196,7 @@ public class PublishOperation extends AbstractOperation<PublishOperation> {
|
|||
* @param actualVersion the version that was potentially adapted if this is a snapshot
|
||||
* @since 1.5.10
|
||||
*/
|
||||
protected void executePublishPom(Repository repository, VersionNumber actualVersion) {
|
||||
protected void executePublishPom(Repository repository, Version actualVersion) {
|
||||
// generate and upload pom
|
||||
executePublishStringArtifact(
|
||||
repository,
|
||||
|
@ -212,7 +212,7 @@ public class PublishOperation extends AbstractOperation<PublishOperation> {
|
|||
* @since 1.5.8
|
||||
*/
|
||||
protected void executePublishMetadata(Repository repository, ZonedDateTime moment) {
|
||||
var current_versions = new ArrayList<VersionNumber>();
|
||||
var current_versions = new ArrayList<Version>();
|
||||
var resolution = new VersionResolution(properties());
|
||||
var resolver = new DependencyResolver(resolution, artifactRetriever(), List.of(repository), new Dependency(info().groupId(), info().artifactId(), info().version()));
|
||||
try {
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
package rife.bld.publish;
|
||||
|
||||
import rife.bld.dependencies.Version;
|
||||
import rife.bld.dependencies.VersionNumber;
|
||||
import rife.template.TemplateFactory;
|
||||
import rife.tools.StringUtils;
|
||||
|
@ -24,7 +25,7 @@ public class MetadataBuilder {
|
|||
|
||||
private PublishInfo info_ = null;
|
||||
private ZonedDateTime timestamp_ = null;
|
||||
private final Set<VersionNumber> otherVersions_ = new HashSet<>();
|
||||
private final Set<Version> otherVersions_ = new HashSet<>();
|
||||
private ZonedDateTime snapshotTimestamp_ = null;
|
||||
private Integer snapshotBuildNumber_ = null;
|
||||
private boolean snapshotLocal_ = false;
|
||||
|
@ -81,7 +82,7 @@ public class MetadataBuilder {
|
|||
* @return this {@code MetadataBuilder} instance
|
||||
* @since 1.5.8
|
||||
*/
|
||||
public MetadataBuilder otherVersions(Collection<VersionNumber> otherVersions) {
|
||||
public MetadataBuilder otherVersions(Collection<Version> otherVersions) {
|
||||
otherVersions_.addAll(otherVersions);
|
||||
return this;
|
||||
}
|
||||
|
@ -94,7 +95,7 @@ public class MetadataBuilder {
|
|||
* @return the other versions
|
||||
* @since 1.5.8
|
||||
*/
|
||||
public Set<VersionNumber> otherVersions() {
|
||||
public Set<Version> otherVersions() {
|
||||
return otherVersions_;
|
||||
}
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
package rife.bld.publish;
|
||||
|
||||
import rife.bld.dependencies.Version;
|
||||
import rife.bld.dependencies.VersionNumber;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -18,7 +19,7 @@ import java.util.List;
|
|||
public class PublishInfo {
|
||||
private String groupId_ = null;
|
||||
private String artifactId_ = null;
|
||||
private VersionNumber version_ = null;
|
||||
private Version version_ = null;
|
||||
private String name_ = null;
|
||||
private String description_ = null;
|
||||
private String url_ = null;
|
||||
|
@ -81,7 +82,7 @@ public class PublishInfo {
|
|||
* @return this {@code PublishInfo} instance
|
||||
* @since 1.5.7
|
||||
*/
|
||||
public PublishInfo version(VersionNumber version) {
|
||||
public PublishInfo version(Version version) {
|
||||
version_ = version;
|
||||
return this;
|
||||
}
|
||||
|
@ -92,7 +93,7 @@ public class PublishInfo {
|
|||
* @return the project's version.
|
||||
* @since 1.5.7
|
||||
*/
|
||||
public VersionNumber version() {
|
||||
public Version version() {
|
||||
return version_;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue