@@ -367,10 +367,11 @@ private static <A, B, C> Stream<Pair<A, B>> flatMap(Pair<A, C> pair, Function<C,
367
367
}
368
368
369
369
private static final Pattern VERSION_PATTERN =
370
- Pattern .compile ("(0|[1-9]\\ d*)(?:\\ .(0|[1-9]\\ d*))?(?:\\ .(0|[1-9]\\ d*))?"
371
- + "(?:-((?:(?:[0-9]+[a-zA-Z-][\\ w-]*)|(?:[a-zA-Z][\\ w-]*)|(?:[1-9]\\ d*)|0)"
372
- + "(?:\\ .(?:(?:[0-9]+[a-zA-Z-][\\ w-]*)|(?:[a-zA-Z][\\ w-]*)|(?:[1-9]\\ d*)|0))*))?"
373
- + "(?:\\ +([\\ w-]+(\\ .[\\ w-]+)*))?" );
370
+ Pattern .compile ("(0|[1-9]\\ d*)" +
371
+ "(?:\\ .(0|[1-9]\\ d*))?" +
372
+ "(?:\\ .(0|[1-9]\\ d*))?" +
373
+ "(?:-((?:0|[1-9]\\ d*|\\ d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\ .(?:0|[1-9]\\ d*|\\ d*[a-zA-Z-][0-9a-zA-Z-]*))*))?" +
374
+ "(?:\\ +([0-9a-zA-Z-]+(?:\\ .[0-9a-zA-Z-]+)*))?" );
374
375
375
376
private enum DependencySide {
376
377
COMMON ,
@@ -505,23 +506,7 @@ private static void scanDeps() {
505
506
}
506
507
val groupId = parts [0 ];
507
508
val artifactId = parts [1 ];
508
- Version version ;
509
- try {
510
- val matcher = VERSION_PATTERN .matcher (parts [2 ]);
511
- if (!matcher .matches ()) {
512
- throw new IllegalArgumentException ("Invalid version: " + parts [2 ]);
513
- }
514
- val major = Integer .parseInt (matcher .group (1 ));
515
- val minor = matcher .group (2 ) == null ? -1
516
- : Integer .parseInt (matcher .group (2 ));
517
- val patch = matcher .group (3 ) == null ? -1
518
- : Integer .parseInt (matcher .group (3 ));
519
- val preRelease = matcher .group (4 );
520
- val build = matcher .group (5 );
521
- version = new SemanticVersion (major , minor , patch , preRelease , build );
522
- } catch (IllegalArgumentException e ) {
523
- version = new RawVersion (parts [2 ]);
524
- }
509
+ Version version = parseVersion (parts [2 ]);
525
510
final String classifier = parts .length > 3 ? parts [3 ] : null ;
526
511
if (classifier != null ) {
527
512
LOG .info ("Found dependency: {}:{}:{}:{} from {}" ,
@@ -552,6 +537,25 @@ private static void scanDeps() {
552
537
tasks = new ArrayList <>(artifacts );
553
538
}
554
539
540
+ public static Version parseVersion (String versionString ) {
541
+ try {
542
+ val matcher = VERSION_PATTERN .matcher (versionString );
543
+ if (!matcher .matches ()) {
544
+ return new RawVersion (versionString );
545
+ }
546
+ val major = Integer .parseInt (matcher .group (1 ));
547
+ val minor = matcher .group (2 ) == null ? -1
548
+ : Integer .parseInt (matcher .group (2 ));
549
+ val patch = matcher .group (3 ) == null ? -1
550
+ : Integer .parseInt (matcher .group (3 ));
551
+ val preRelease = matcher .group (4 );
552
+ val build = matcher .group (5 );
553
+ return new SemanticVersion (major , minor , patch , preRelease , build );
554
+ } catch (Exception e ) {
555
+ return new RawVersion (versionString );
556
+ }
557
+ }
558
+
555
559
private static class SideAwareAssistant {
556
560
static ScopeSide current () {
557
561
return new ScopeSide (Share .DEV_ENV ? DependencyScope .DEV : DependencyScope .OBF , FMLLaunchHandler .side () == Side .CLIENT ? DependencySide .CLIENT : DependencySide .SERVER );
0 commit comments