maven依赖

 <!–        maven调用打包工具–>

        <dependency>

            <groupId>org.apache.maven.shared</groupId>

            <artifactId>maven-invoker</artifactId>

            <version>3.0.1</version>

        </dependency>

编写工具类

package cn.sdu.weblab.util;

import org.apache.maven.shared.invoker.*;

import java.io.File;

import java.io.FilenameFilter;

import java.util.Arrays;

/**

 * maven项目打包工具类

 */

public class MavenBuild {

    /**

     * 打包项目 会在项目根目录下生成target文件

     *

     * @param projectRootPath 要打包的项目的根路径

     * @param mavenPath       要使用的maven路径

     */

    public static void build(String projectRootPath, String mavenPath) {

        InvocationRequest request = new DefaultInvocationRequest();

        //设置根路径

        request.setBaseDirectory(new File(projectRootPath));

        //设置要执行的maven操作

        request.setGoals(Arrays.asList("clean", "package"));

        //调用工具

        Invoker invoker = new DefaultInvoker();

        //设置要使用的maven路径

        invoker.setMavenHome(new File(mavenPath));

        try {

            //开始执行maven构建

            InvocationResult res = invoker.execute(request);

            //返回状态码

            if (res.getExitCode() == 0) {

                //打包成功

            } else {

                //打包失败

            }

        } catch (MavenInvocationException e) {

            e.printStackTrace();

        }

    }

    /**

     * 获取打包之后的jar包或者war包

     *

     * @param projectRootPath 项目根路径

     * @return

     */

    public static File getPackage(String projectRootPath) {

        //读取根路径

        File rootFile = new File(projectRootPath);

        //读取target目录

        File targetFile = new File(rootFile, "target");

        //根据正则匹配查找jar包或者war包

        File[] files = targetFile.listFiles(new FilenameFilter() {

            @Override

            public boolean accept(File dir, String name) {

                String grep = ".*\\.(war|jar)";

                return name.matches(grep);

            }

        });

        //返回找到的包 否则返回null

        return files != null ? files[0] : null;

    }

}