public static String toCanonicalForm(final Artifact artifact) {
final StringBuilder sb = new StringBuilder();
sb.append(artifact.getGroupId()).append(":");
sb.append(artifact.getArtifactId()).append(":");
final PackagingType packaging = PackagingType
.of(artifact.getProperty(ArtifactProperties.TYPE, artifact.getExtension()));
final String classifier = artifact.getClassifier().length() == 0 ? packaging.getClassifier() : artifact.getClassifier();
sb.append(packaging.getId()).append(":");
if (classifier.length() != 0) {
sb.append(classifier).append(":");
}
sb.append(artifact.getVersion());