code: public ArtifactName build() {
          String groupId = this.groupId;
          String artifactId = this.artifactId;
          String classifier = this.classifier;
          String packaging = this.packaging;
          String version = this.version;
          if (artifact != null && !artifact.isEmpty()) {
              final String[] artifactSegments = artifact.split(":");
              // groupId:artifactId:version[:packaging][:classifier].
              String value;
              switch (artifactSegments.length) {
                  case 5:
                      value = artifactSegments[4].trim();
                      if (!value.isEmpty()) {
                          classifier = value;
                      }
                  case 4:
                      value = artifactSegments[3].trim();
                      if (!value.isEmpty()) {
                          packaging = value;
                      }
                  case 3:
                      value = artifactSegments[2].trim();
                      if (!value.isEmpty()) {
                          version = value;
                      }
                  case 2:
                      value = artifactSegments[1].trim();
                      if (!value.isEmpty()) {
                          artifactId = value;
                      }
                  case 1:
                      value = artifactSegments[0].trim();
                      if (!value.isEmpty()) {
                          groupId = value;
                      }
              }
          }
          return new ArtifactNameImpl(groupId, artifactId, classifier, packaging, version);
      }
docs: Creates the final artifact name.
  
  @return the artifact name