Maven Comando per elencare le fasi del ciclo di vita insieme con gli obiettivi legati?

StackOverflow https://stackoverflow.com/questions/1709625

  •  19-09-2019
  •  | 
  •  

Domanda

Sto scoprendo Maven, e quindi questo potrebbe essere ovvio, ma non riesco a trovare un modo semplice per elencare gli obiettivi associati per ogni fase del ciclo di vita Maven per un determinato progetto.

Ho visto che le fasi del ciclo di vita di default Maven e corrispondenti obiettivi predefiniti sono documentate qui . La mia comprensione finora è che ogni pom.xml può legare ulteriori obiettivi per ogni fase del ciclo di vita.

Quindi, c'è un comando mvn per determinare gli obiettivi che verranno eseguiti per ogni fase del ciclo di vita di un determinato progetto? In caso contrario, credo che non mi resta che guardare attraverso il pom.xml per ogni nuovo progetto Maven di conoscere questo?

È stato utile?

Soluzione

mvn help:describe -Dcmd=compile (o qualsiasi altra fase valido)

Altri suggerimenti

Il buildplan-maven-plugin è un ottimo strumento per mostrare come gli obiettivi sono destinati a fasi.

Di seguito sono riportati esempi di comandi è possibile eseguire. I comandi potranno scaricare e installare il plugin, se non è già stato installato automaticamente.

Elenco reti di nell'ordine in cui verranno eseguiti

> mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:list

PLUGIN                  | PHASE                  | ID                    | GOAL
--------------------------------------------------------------------------------------------
maven-enforcer-plugin   | validate               | default               | enforce
maven-dependency-plugin | process-sources        | default               | copy-dependencies
maven-resources-plugin  | process-resources      | default-resources     | resources
maven-compiler-plugin   | compile                | default-compile       | compile
maven-resources-plugin  | process-test-resources | default-testResources | testResources
maven-compiler-plugin   | test-compile           | default-testCompile   | testCompile
maven-surefire-plugin   | test                   | default-test          | test
maven-jar-plugin        | package                | default-jar           | jar
maven-assembly-plugin   | package                | make-assembly         | single
maven-install-plugin    | install                | default-install       | install
maven-deploy-plugin     | deploy                 | default-deploy        | deploy

obiettivi del Gruppo per fase

> mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:list-phase

validate -----------------------------------------------------------------
    + maven-enforcer-plugin   | default               | enforce
process-sources ----------------------------------------------------------
    + maven-dependency-plugin | default               | copy-dependencies
process-resources --------------------------------------------------------
    + maven-resources-plugin  | default-resources     | resources
compile ------------------------------------------------------------------
    + maven-compiler-plugin   | default-compile       | compile
process-test-resources ---------------------------------------------------
    + maven-resources-plugin  | default-testResources | testResources
test-compile -------------------------------------------------------------
    + maven-compiler-plugin   | default-testCompile   | testCompile
test ---------------------------------------------------------------------
    + maven-surefire-plugin   | default-test          | test
package ------------------------------------------------------------------
    + maven-jar-plugin        | default-jar           | jar
    + maven-assembly-plugin   | make-assembly         | single
install ------------------------------------------------------------------
    + maven-install-plugin    | default-install       | install
deploy -------------------------------------------------------------------
    + maven-deploy-plugin     | default-deploy        | deploy

obiettivi del Gruppo per il plugin

> mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:list-plugin

maven-enforcer-plugin ---------------------------------------------------
    + validate               | default               | enforce
maven-dependency-plugin -------------------------------------------------
    + process-sources        | default               | copy-dependencies
maven-resources-plugin --------------------------------------------------
    + process-resources      | default-resources     | resources
    + process-test-resources | default-testResources | testResources
maven-compiler-plugin ---------------------------------------------------
    + compile                | default-compile       | compile
    + test-compile           | default-testCompile   | testCompile
maven-surefire-plugin ---------------------------------------------------
    + test                   | default-test          | test
maven-jar-plugin --------------------------------------------------------
    + package                | default-jar           | jar
maven-assembly-plugin ---------------------------------------------------
    + package                | make-assembly         | single
maven-install-plugin ----------------------------------------------------
    + install                | default-install       | install
maven-deploy-plugin -----------------------------------------------------
    + deploy                 | default-deploy        | deploy

Note

Per impostazione predefinita, la ricerca di obiettivi per le attività che avrebbe eseguito se l'utente ha invocato mvn deploy. Fasi quali clean non saranno inclusi. Per includere più fasi nella ricerca, utilizzare la proprietà buildplan.tasks:

> mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:list -Dbuildplan.tasks=clean,deploy

Uno strumento che aiuta è mvn help:effective-pom Si stampa il POM con tutte le variabili e tutte le POM genitore espansi. Questo aiuta a capire che cosa vede Maven. Da questo, è piuttosto semplice da trovare tutti gli ulteriori obiettivi (che di solito non sono che molti).

Il problema più grande è obiettivi impliciti (cioè quando un plugin si agganci ad alcune fasi del ciclo automatico). Non v'è alcun modo semplice per vedere questi senza effettivamente in esecuzione Maven. Questo dovrebbe diventare meglio in Maven 3. Fino ad allora, eseguire Maven con -X che stamperà un sacco di debug oltre la fase attuale e quali plugin vengono eseguiti.

Se non con Maven ma utilizzando M2E è possibile farlo utilizzando il blocco di codice che è possibile utilizzare in un plugin Eclipse:


final IMavenProjectRegistry projectRegistry = MavenPlugin.getMavenProjectRegistry();
    final IMavenProjectFacade facade = projectRegistry.getProject(project);
    projectRegistry.execute(facade, new ICallable<Void>() {
        public Void call(IMavenExecutionContext context, IProgressMonitor monitor) throws CoreException {
            MavenProject mavenProject = facade.getMavenProject(monitor);
            List<MojoExecution> mojoExecutions = ((MavenProjectFacade) facade).getMojoExecutions(monitor);
            LifecycleMappingResult mappingResult = LifecycleMappingFactory.calculateLifecycleMapping(
                    mavenProject, mojoExecutions, facade.getResolverConfiguration().getLifecycleMappingId(),
                    monitor);
            Map<MojoExecutionKey, List<IPluginExecutionMetadata>> mojoExecutionMapping = mappingResult
                    .getMojoExecutionMapping();

            Map<String, List<MojoExecutionKey>> phases = new LinkedHashMap<String, List<MojoExecutionKey>>();
            for (MojoExecutionKey execution : mojoExecutionMapping.keySet()) {
                List<MojoExecutionKey> executions = phases.get(execution.getLifecyclePhase());
                if (executions == null) {
                    executions = new ArrayList<MojoExecutionKey>();
                    phases.put(execution.getLifecyclePhase(), executions);

                    }
                    executions.add(execution);
                }

Guardate pieno fonte .

Già implementata in:

http://marketplace.eclipse.org/content/phases-and-goals

Si avvale della capacità di M2E per calcolare l'associazione di obiettivi con fasi. Sto anche cercando di risolverlo a livello Maven.

ho messo la risposta di Chad in uno script (in modo da non dover ricordare il nome del plugin, che è davvero lunga). Metti nel tuo bin / cartella ~ / in modo da poter utilizzare ovunque.

#!/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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top