private List<String> alterModel(MavenProject project, String newVersion) { Model originalModel = project.getOriginalModel(); originalModel.setVersion(newVersion); List<String> errors = new ArrayList<String>(); String searchingFrom = project.getArtifactId(); MavenProject parent = project.getParent(); if (parent != null && isSnapshot(parent.getVersion())) { try { ReleasableModule parentBeingReleased = reactor.find(parent.getGroupId(), parent.getArtifactId(), parent.getVersion()); originalModel.getParent().setVersion(parentBeingReleased.getVersionToDependOn()); log.debug( " Parent " + parentBeingReleased.getArtifactId() + " rewritten to version " + parentBeingReleased.getVersionToDependOn()); } catch (UnresolvedSnapshotDependencyException e) { errors.add("The parent of " + searchingFrom + " is " + e.artifactId + " " + e.version); } } for (Dependency dependency : originalModel.getDependencies()) { String version = dependency.getVersion(); if (isSnapshot(version)) { try { ReleasableModule dependencyBeingReleased = reactor.find(dependency.getGroupId(), dependency.getArtifactId(), version); dependency.setVersion(dependencyBeingReleased.getVersionToDependOn()); log.debug( " Dependency on " + dependencyBeingReleased.getArtifactId() + " rewritten to version " + dependencyBeingReleased.getVersionToDependOn()); } catch (UnresolvedSnapshotDependencyException e) { errors.add(searchingFrom + " references dependency " + e.artifactId + " " + e.version); } } else log.debug( " Dependency on " + dependency.getArtifactId() + " kept at version " + dependency.getVersion()); } for (Plugin plugin : project.getModel().getBuild().getPlugins()) { String version = plugin.getVersion(); if (isSnapshot(version)) { if (!isMultiModuleReleasePlugin(plugin)) { errors.add( searchingFrom + " references plugin " + plugin.getArtifactId() + " " + version); } } } return errors; }
public UpdateResult updateVersion() { List<File> changedPoms = new ArrayList<File>(); List<String> errors = new ArrayList<String>(); for (ReleasableModule module : reactor.getModulesInBuildOrder()) { try { MavenProject project = module.getProject(); if (module.willBeReleased()) { log.info("Going to release " + module.getArtifactId() + " " + module.getNewVersion()); } List<String> errorsForCurrentPom = alterModel(project, module.getNewVersion()); errors.addAll(errorsForCurrentPom); File pom = project.getFile().getCanonicalFile(); changedPoms.add(pom); Writer fileWriter = new FileWriter(pom); Model originalModel = project.getOriginalModel(); try { MavenXpp3Writer pomWriter = new MavenXpp3Writer(); pomWriter.write(fileWriter, originalModel); } finally { fileWriter.close(); } } catch (Exception e) { return new UpdateResult(changedPoms, errors, e); } } return new UpdateResult(changedPoms, errors, null); }