List<ValueSource> (Model model, File projectDir, ProjectBuilderConfiguration config) { List<ValueSource> sources = super.createValueSources(model, projectDir, config); int firstMapIndex = -1; for (int i = 0; i < sources.size(); i++) { if (sources.get(i) instanceof MapBasedValueSource) { firstMapIndex = i; break; } } Map<String, Object> rightOrderProperties = new HashMap<String, Object>(3); if (config.getExecutionProperties().containsKey(REVISION_PROPERTY)) { rightOrderProperties.put(REVISION_PROPERTY, config.getExecutionProperties().getProperty(REVISION_PROPERTY)); } if (config.getExecutionProperties().containsKey(CHANGELIST_PROPERTY)) { rightOrderProperties.put(CHANGELIST_PROPERTY, config.getExecutionProperties().getProperty(CHANGELIST_PROPERTY)); } if (config.getExecutionProperties().containsKey(SHA1_PROPERTY)) { rightOrderProperties.put(SHA1_PROPERTY, config.getExecutionProperties().getProperty(SHA1_PROPERTY)); } // these 3 system properties must be resolved before model properties sources.add(firstMapIndex + 1, new MapBasedValueSource(rightOrderProperties)); return sources; }