core/src/main/java/io/fabric8/maven/core/util/PluginServiceFactory.java
public <T> List<T> createServiceObjects(String... descriptorPaths) {
        try {
            ServiceEntry.initDefaultOrder();
            TreeMap<ServiceEntry,T> serviceMap = new TreeMap<ServiceEntry,T>();
            for (String descriptor : descriptorPaths) {
                readServiceDefinitions(serviceMap, descriptor);
            }
            ArrayList<T> ret = new ArrayList<T>();
            for (T service : serviceMap.values()) {
                ret.add(service);
            }
            return ret;
        } finally {
            ServiceEntry.removeDefaultOrder();
        }
    }
public <T> List<T> createServiceObjects(String... descriptorPaths) {
        try {
            ServiceEntry.initDefaultOrder();
            TreeMap<ServiceEntry,T> serviceMap = new TreeMap<ServiceEntry,T>();
            for (String descriptor : descriptorPaths) {
                readServiceDefinitions(serviceMap, descriptor);
            }
            ArrayList<T> ret = new ArrayList<T>();
            for (T service : serviceMap.values()) {
                ret.add(service);
            }
            return ret;
        } finally {
            ServiceEntry.removeDefaultOrder();
        }
    }
Create a list of services ordered according to the ordering given in the
service descriptor files. Note, that the descriptor will be looked up
in the whole classpath space, which can result in reading in multiple
descriptors with a single path. Note, that the reading order for multiple
resources with the same name is not defined.

@param descriptorPaths a list of resource paths which are handle in the given order.
Normally, default service should be given as first parameter so that custom
descriptors have a chance to remove a default service.
@param <T> type of the service objects to create
@return a ordered list of created services or an empty list.