code: public static MavenDependency createDependency(final String canonicalForm, final ScopeType scope,
          final boolean optional, final MavenDependencyExclusion... exclusions) throws IllegalArgumentException,
          CoordinateParseException {
          if (canonicalForm == null || canonicalForm.length() == 0) {
              throw new IllegalArgumentException("canonical form is required");
          }
          final MavenCoordinate delegate = MavenCoordinates.createCoordinate(canonicalForm);
          return createDependency(delegate, scope, optional, exclusions);
      }
docs: Creates a new {@link MavenDependency} instance from the specified, required canonical form in format
  {@code <groupId>:<artifactId>[:<packagingType>[:<classifier>]][:<version>]}, with the additional, optional
  properties. If no {@link ScopeType} is specified, default will be {@link ScopeType#COMPILE}.
  
  @param canonicalForm A canonical form in format {@code <groupId>:<artifactId>[:<packagingType>[:<classifier>]][:<version>]}
  of the new {@link MavenDependency} instance.
  @param scope A scope of the new {@link MavenDependency} instance. Default will be {@link ScopeType#COMPILE}.
  @param optional Whether or not this {@link MavenDependency} has been marked as optional; defaults to <code>false</code>.
  @param exclusions Exclusions of the new {@link MavenDependency} instance.
  @return The new {@link MavenDependency} instance.
  @throws IllegalArgumentException
  If the canonical form is not supplied
  @throws CoordinateParseException
  If the specified canonical form is not valid