code: public static MavenCoordinate createCoordinate(final String canonicalForm) throws IllegalArgumentException,
          CoordinateParseException {
          if (canonicalForm == null || canonicalForm.length() == 0) {
              throw new IllegalArgumentException("canonical form is required");
          }
          final MavenCoordinateParser parser = MavenCoordinateParser.parse(canonicalForm);
          return createCoordinate(parser.getGroupId(), parser.getArtifactId(), parser.getVersion(),
              parser.getPackaging(), parser.getClassifier());
      }
docs: Creates a new {@link MavenCoordinate} instance from the specified, required canonical form in format
  {@code <groupId>:<artifactId>[:<packagingType>[:<classifier>]]:(<version>|'?')}
  
  @param canonicalForm The canonical form.
  @return A new {@link MavenCoordinate} instance from the given canonical form
  @throws IllegalArgumentException
  If the canonical form is not supplied
  @throws CoordinateParseException
  If the specified canonical form is not valid