All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mysema.maven.version.AbstractVersionMojo Maven / Gradle / Ivy

The newest version!
package com.mysema.maven.version;

import java.io.File;
import java.io.FileOutputStream;

import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Nodes;
import nu.xom.Serializer;
import nu.xom.XPathContext;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;

/**
 * 
 * @author tiwe
 * 
 */
public abstract class AbstractVersionMojo extends AbstractMojo {
   
    private static final String NS = "http://maven.apache.org/POM/4.0.0";

    /**
     * @parameter expression="${basedir}"
     * @required
     * @readonly
     */
    protected File basedir;


    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        try {
            Builder builder = new Builder();
            File pomFile = new File(basedir, "pom.xml");
            Document doc = builder.build(pomFile);
            XPathContext context = new XPathContext("mvn",NS);
            Nodes nodes = doc.query("/mvn:project/mvn:version", context);
            if (nodes.size() == 0){
                nodes = doc.query("/mvn:project/mvn:parent/mvn:version", context);
                if (nodes.size() == 0){
                    getLog().error("No version found");
                    return;
                }
            }
            if (update(nodes)){
                Serializer serializer = new Serializer(new FileOutputStream(pomFile),"UTF-8");
                serializer.write(doc);
            }
            
        } catch (Exception e) {
            getLog().error(e.getMessage(), e);
        }
    }

    private boolean update(Nodes nodes) {
        Element node = (Element) nodes.get(0);
        String newValue = createValue(node.getValue());
        if (newValue != null){
            node.removeChildren();
            node.appendChild(newValue);
            return true;
        }else{
            return false;
        }
    }
    
    protected abstract String createValue(String value);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy