public void mergePoms(File pom, File temporaryPom) throws IOException, XmlPullParserException { Model model=readPom(pom); Model generatedModel=readPom(temporaryPom); mergeModelBase(model, generatedModel); mergeModelBuild(model, generatedModel); mergeProfiles(model, generatedModel); mergeReportPlugins(model, generatedModel); writePom(model, pom, pom);
private void mergeModelBase( ModelBase model, ModelBase generatedModel ) { // ModelBase can be a Model or a Profile... @SuppressWarnings( "unchecked" ) Map<String, Dependency> dependenciesByIds = createDependencyMap( model.getDependencies() ); @SuppressWarnings( "unchecked" ) Map<String, Dependency> generatedDependenciesByIds = createDependencyMap( generatedModel.getDependencies() ); for ( String generatedDependencyId : generatedDependenciesByIds.keySet() ) { if ( !dependenciesByIds.containsKey( generatedDependencyId ) ) { model.addDependency( (Dependency) generatedDependenciesByIds.get( generatedDependencyId ) ); } else { getLogger().warn( "Can not override property: " + generatedDependencyId ); } // TODO: maybe warn, if a property key gets overridden? model.getProperties().putAll( generatedModel.getProperties() ); // TODO: maybe merge more than just dependencies and properties... } }
getLogger().warn( "Try to merge profiles with id " + generatedProfileId ); mergeModelBase( (Profile) modelProfileIdMap.get( generatedProfileId ), generatedProfile ); mergeProfileBuild( (Profile) modelProfileIdMap.get( generatedProfileId ), generatedProfile );
private void mergeProfiles(Model model, Model generatedModel) { List<Profile> generatedProfiles=generatedModel.getProfiles(); if (generatedProfiles != null && generatedProfiles.size() > 0) { List<Profile> modelProfiles=model.getProfiles(); Map<String,Profile> modelProfileIdMap=new HashMap<String,Profile>(); if (modelProfiles == null) { modelProfiles=new ArrayList<Profile>(); model.setProfiles(modelProfiles); } else if (modelProfiles.size() > 0) { // add profile ids from the model for later lookups to the modelProfileIds set for (Profile modelProfile : modelProfiles) { modelProfileIdMap.put(modelProfile.getId(), modelProfile); } } for (Profile generatedProfile : generatedProfiles) { String generatedProfileId=generatedProfile.getId(); if (!modelProfileIdMap.containsKey(generatedProfileId)) { model.addProfile(generatedProfile); } else { log.warn("Try to merge profiles with id " + generatedProfileId); mergeModelBase(modelProfileIdMap.get(generatedProfileId), generatedProfile); mergeProfileBuild(modelProfileIdMap.get(generatedProfileId), generatedProfile); } } } }
public void addParent( File pom, File parentPom ) throws IOException, XmlPullParserException { Model generatedModel = readPom( pom ); if ( null != generatedModel.getParent() ) { getLogger().info( "Parent element not overwritten in " + pom ); return; } Model parentModel = readPom( parentPom ); Parent parent = new Parent(); parent.setGroupId( parentModel.getGroupId() ); if ( parent.getGroupId() == null ) { parent.setGroupId( parentModel.getParent().getGroupId() ); } parent.setArtifactId( parentModel.getArtifactId() ); parent.setVersion( parentModel.getVersion() ); if ( parent.getVersion() == null ) { parent.setVersion( parentModel.getParent().getVersion() ); } generatedModel.setParent( parent ); writePom( generatedModel, pom, pom ); }
public void addParent(File pom, File parentPom) throws IOException, XmlPullParserException { Model generatedModel=readPom(pom); if (null != generatedModel.getParent()) { log.info("Parent element not overwritten in " + pom); return; } Model parentModel=readPom(parentPom); Parent parent=new Parent(); parent.setGroupId(parentModel.getGroupId()); if (parent.getGroupId() == null) { parent.setGroupId(parentModel.getParent().getGroupId()); } parent.setArtifactId(parentModel.getArtifactId()); parent.setVersion(parentModel.getVersion()); if (parent.getVersion() == null) { parent.setVersion(parentModel.getParent().getVersion()); } generatedModel.setParent(parent); writePom(generatedModel, pom, pom); }
private void mergeModelBuild( Model model, Model generatedModel ) { if ( generatedModel.getBuild() != null ) { if ( model.getBuild() == null ) { model.setBuild( new Build() ); } mergeBuildPlugins( model.getBuild(), generatedModel.getBuild() ); } }
/** * Helper function to re-write pom.xml file with lineEnding \n instead of \r\n */ protected void processCorrectCrlf(DefaultPomManager pomManager, File pom) { InputStream inputStream = null; Writer outputStreamWriter = null; final Model model; try { model = pomManager.readPom(pom); String fileEncoding = StringUtils.isEmpty(model.getModelEncoding()) ? model.getModelEncoding() : "UTF-8"; inputStream = new FileInputStream(pom); SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(inputStream); // The cdata parts of the pom are not preserved from initial to target MavenJDOMWriter writer = new MavenJDOMWriter(); outputStreamWriter = new OutputStreamWriter(new FileOutputStream(pom), fileEncoding); Format form = Format.getRawFormat().setEncoding(fileEncoding); form.setLineSeparator("\n"); writer.write(model, doc, outputStreamWriter, form); } catch (Exception e) { log.error("Have exception when try correct line ending.", e); } finally { IOUtil.close(inputStream); IOUtil.close(outputStreamWriter); } }
private void mergeModelBase(ModelBase model, ModelBase generatedModel) { // ModelBase can be a Model or a Profile... Map<String,Dependency> dependenciesByIds=createDependencyMap(model.getDependencies()); Map<String,Dependency> generatedDependenciesByIds=createDependencyMap(generatedModel.getDependencies()); for (String generatedDependencyId : generatedDependenciesByIds.keySet()) { if (!dependenciesByIds.containsKey(generatedDependencyId)) { model.addDependency(generatedDependenciesByIds.get(generatedDependencyId)); } else { log.warn("Can not override property: " + generatedDependencyId); } // TODO: maybe warn, if a property key gets overriden? model.getProperties().putAll(generatedModel.getProperties()); // TODO: maybe merge more than just dependencies and properties... } }
private void mergeModelBuild(Model model, Model generatedModel) { if (generatedModel.getBuild() != null) { if (model.getBuild() == null) { model.setBuild(new Build()); } mergeBuildPlugins(model.getBuild(), generatedModel.getBuild()); } }
public void mergePoms( File pom, File temporaryPom ) throws IOException, XmlPullParserException Model model = readPom( pom ); Model generatedModel = readPom( temporaryPom ); mergeModelBase( model, generatedModel ); mergeModelBuild( model, generatedModel ); mergeProfiles( model, generatedModel ); mergeReportPlugins( model, generatedModel ); writePom( model, pom, pom );
private void mergeProfileBuild(Profile modelProfile, Profile generatedProfile) { if (generatedProfile.getBuild() != null) { if (modelProfile.getBuild() == null) { modelProfile.setBuild(new Build()); } mergeBuildPlugins(modelProfile.getBuild(), generatedProfile.getBuild()); // TODO: merge more than just plugins in the profile... } }
private void mergeProfileBuild( Profile modelProfile, Profile generatedProfile ) { if ( generatedProfile.getBuild() != null ) { if ( modelProfile.getBuild() == null ) { modelProfile.setBuild( new Build() ); } mergeBuildPlugins( modelProfile.getBuild(), generatedProfile.getBuild() ); // TODO: merge more than just plugins in the profile... } }