Maven command to list lifecycle phases along with bound goals?

前端 未结 5 1684
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-07 07:24

I\'m just learning Maven, and so this might be obvious, but I can\'t find an easy way to list the goals associated for each maven lifecycle phase for a given project.

5条回答
  •  孤城傲影
    2020-12-07 07:31

    I put Chad's answer into a script (so I don't have to remember the plugin name which is really long). Put it in your ~/bin/ folder so you can use it anywhere.

    #!/usr/bin/env bash
    # Created based on https://stackoverflow.com/a/35610377/529256
    debug=false
    
    goal='list-phase'
    build_plan='clean,deploy'
    working_directories=""
    
    for (( i=1; i<=$#; i++ )) do
        case ${!i} in
    
            -h|--help)
                programName=$( basename ${0} )
                echo "Lists the goals of mvn project(s) by phase in a table";
                echo
                echo "Usage:";
                echo "    ${programName} -d|--debug -g|--goal goal -b|--build_plan build_plan [*directory]";
                echo
                echo "           --goal  The goal for the buildplan-maven-plugin (default: $goal)"
                echo "                   (possible values: list, list-plugin, list-phase)"
                echo
                echo "     --build_plan  The value of the buildplan.tasks parameter (default: $build_plan)"
                echo "                   (examples: 'clean,install', 'deploy', 'install', etc...) "
                echo
                echo "     [*directory]  The directories (with pom.xml files) to run the command in"
                exit 0;
                ;;
            -d|--debug)
                debug=true;
                echo "debug = ${debug}";
                ;;
            -b|--build_plan)
                ((i++))
                build_plan="${!i}"
                ;;
            -g|--goal)
                ((i++))
                goal="${!i}"
                ;;
            *)
                working_directory="${!i}";
                if [ ! -e "${working_directory}" ]; then
                    echo "'${working_directory}' doesn't exist";
                    exit 1;
                fi;
                if [ -z "${working_directories}" ]; then
                    working_directories="$working_directory"
                else
                    working_directories="$working_directories ${!i}"
                fi;
                ;;
        esac;
    done;
    
    if [ -z "${working_directories}" ]; then
        working_directories="$PWD"
    fi
    
    if [ ${debug} = true ]; then
        echo "working_directories=$working_directories"
        echo "goal=$goal"
        echo "build_plan=$build_plan"
    fi
    
    for workingDirectory in ${working_directories}; do
        pushd ${workingDirectory} > /dev/null
        echo "cd $workingDirectory"
        echo "mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:${goal} -Dbuildplan.tasks=${build_plan}"
        mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:${goal} -Dbuildplan.tasks=${build_plan}
        popd > /dev/null
    done;
    

提交回复
热议问题