Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

yuchi/java-npm-semver

Repository files navigation

Java npm SemVer

This is a direct port node-semver, great to have npm like semantics in a Java application.

Releases

Available in the Maven Central repository.

Maven configuration

<dependency>
 <groupId>com.github.yuchi</groupId>
 <artifactId>npm-semver</artifactId>
 <version>1.0.0</version>
</dependency>

Gradle configuration

compile group: "com.github.yuchi", name: "npm-semver", version: "1.0.0"
// or
compile "com.github.yuchi:npm-semver:1.0.0"

Quick usage

Version version = Version.from("1.2.3");
Range range = Range.from("^1.2.0");
range.test(version) // true

Full Usage

Version comparison

boolean loose = false;
Version v1 = Version.from("1.2.3", loose);
String v2 = Version.from("1.3.0", loose);
v1.compareTo(v2); // -1
v2.compareTo(v1); // +1
v1.compareTo(v1); // 0

In Range tests

boolean loose = false;
Version v = Version.from("1.2.3", loose);
Range r = Range.from("^1.0.0", loose);
r.test(v); // true

Range boundaries test

boolean loose = false;
SemVer.isGreaterThenRange("1.3.0", ">1.0.0 <1.4.0", loose); // false
SemVer.isGreaterThenRange("1.5.0", ">1.0.0 <1.4.0", loose); // true
SemVer.isGreaterThenRange("0.9.0", ">1.0.0 <1.4.0", loose); // false
SemVer.isLessThenRange("1.3.0", ">1.0.0 <1.4.0", loose); // false
SemVer.isLessThenRange("1.5.0", ">1.0.0 <1.4.0", loose); // false
SemVer.isLessThenRange("0.9.0", ">1.0.0 <1.4.0", loose); // true

Sorting

List<Version> versions = new ArrayList<Version>();
versions.add(Version.from("4.2.0", false));
versions.add(Version.from("1.8.0", false));
versions.add(Version.from("1.2.0", false));
versions.sort(new VersionComparator()); // { "4.2.0", "1.8.0", "1.2.0" }

Versions Stream filtering

List<Version> versions = new ArrayList<Version>();
versions.add(Version.from("4.2.0", false));
versions.add(Version.from("1.8.0", false));
versions.add(Version.from("1.2.0", false));
Range range = Range.from(">3.0.0", false);
version.stream().filter(range::test); // { "4.2.0" }

Publishing

$ trash build
$ trash tmp
$ mkdir tmp
$ gradle clean preparePublish publish
$ gradle clean preparePublish publish # yes you need to launch it twice

License

This library, java-npm-semver, is free software ("Licensed Software"); you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; including but not limited to, the implied warranty of MERCHANTABILITY, NONINFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

About

Implementation of the SemVer Specification — strictly follows npm semantics

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /