/** * Return a <code>Project</code> object by copying values from the <code>properties</code> object into a <code>Project</code> object. */ public static Project getProject(Properties properties) { List<String> skipKeys = Arrays.asList("project.dependencies"); String startsWith = "project."; List<String> keys = PropertyUtils.getStartsWithKeys(properties, startsWith); Project project = new Project(); project.setProperties(properties); Map<String, Object> description = ReflectionUtils.describe(project); Set<String> beanProperties = description.keySet(); for (String key : keys) { if (skipKeys.contains(key)) { continue; } String value = properties.getProperty(key); String beanProperty = getBeanProperty(key, startsWith); if (beanProperties.contains(beanProperty)) { ReflectionUtils.copyProperty(project, beanProperty, value); } } String csv = RepositoryUtils.toNull(properties.getProperty("project.dependencies")); List<Dependency> dependencies = getDependencies(csv); project.setDependencies(dependencies); return project; }
/** * Create a skeleton <code>Project</code> object from the <code>gav</code>. Nothing but the GAV info (groupId:artifactId:packaging:version:classifier) gets filled in. Does not * read <code>project.properties</code> from disk. */ public static Project getProject(String gav) { logger.debug("Processing [{}]", gav); String[] tokens = StringUtils.split(gav, ":"); Project project = new Project(); if (tokens.length > 0) { project.setGroupId(RepositoryUtils.toNull(tokens[0])); } if (tokens.length > 1) { project.setArtifactId(RepositoryUtils.toNull(tokens[1])); } if (tokens.length > 2) { project.setPackaging(RepositoryUtils.toNull(tokens[2])); } if (tokens.length > 3) { project.setVersion(RepositoryUtils.toNull(tokens[3])); } if (tokens.length > 4) { project.setClassifier(RepositoryUtils.toNull(tokens[4])); } return project; }