in src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFormatUtils.java [255:292]
public static String fixRelativeRefs(String src) {
String value = src;
String[] separators = {"/", "\\"};
String finalSep = null;
for (String sep : separators) {
if (value.endsWith(sep)) {
finalSep = sep;
}
if (value.contains("." + sep)) {
List<String> parts = new ArrayList<>();
parts.addAll(Arrays.asList(value.split(sep.replace("\\", "\\\\"))));
for (ListIterator<String> it = parts.listIterator(); it.hasNext(); ) {
String part = it.next();
if (".".equals(part)) {
it.remove();
} else if ("..".equals(part)) {
it.remove();
if (it.hasPrevious()) {
it.previous();
it.remove();
}
}
}
value = StringUtils.join(parts.iterator(), sep);
}
}
if (finalSep != null && value.length() > 0 && !value.endsWith(finalSep)) {
value += finalSep;
}
return value;
}