बाध्य लक्ष्यों के साथ जीवन चक्र चरणों की सूची बनाने के लिए मावेन कमांड?


104

मैं सिर्फ मावेन सीख रहा हूं, और इसलिए यह स्पष्ट हो सकता है, लेकिन मैं किसी दिए गए प्रोजेक्ट के लिए प्रत्येक मावेन जीवन चक्र चरण से जुड़े लक्ष्यों को सूचीबद्ध करने का एक आसान तरीका नहीं खोज सकता।

मैंने देखा कि मावेन डिफ़ॉल्ट जीवन चक्र चरणों और इसी डिफ़ॉल्ट लक्ष्यों को यहां प्रलेखित किया गया है । अब तक मेरी समझ यह है कि प्रत्येक pom.xml प्रत्येक जीवनचक्र के चरण में अतिरिक्त लक्ष्यों को बांध सकता है।

तो, क्या किसी दिए गए प्रोजेक्ट के लिए प्रत्येक जीवनचक्र चरण के लिए चलाए जाने वाले लक्ष्यों को निर्धारित करने के लिए एक mvan कमांड है? यदि नहीं, तो मुझे लगता है कि मुझे यह पता लगाने के लिए प्रत्येक नए मावेन प्रोजेक्ट के लिए pom.xml के माध्यम से देखना होगा?

जवाबों:


128

mvn help:describe -Dcmd=compile (या कोई अन्य मान्य चरण)


3
इस कमांड के आउटपुट में चरणों के लिए बाध्य लक्ष्य नहीं देखना। इसके बजाय, मैं प्लगइन्स / चरण देख रहा हूं।
दिमित्री मिंकोवस्की

माबिये मैंने प्रश्न को गलत समझा, लेकिन यह कमांड प्रश्न के लिए "रिवर्स लुकअप" है (सभी चरणों को सूचीबद्ध करते हुए यह लक्ष्य है)? लिंक का कहना है "एक मावेन प्लगइन और / या लक्ष्यों के लिए विशेषताओं की एक सूची प्रदर्शित करता है (उर्फ मोजो - मावेन सादे पुराने जावा ऑब्जेक्ट)।"
user2039709

131

buildplan-maven-pluginदिखा कैसे लक्ष्यों चरणों के लिए बाध्य कर रहे हैं के लिए एक उत्कृष्ट उपकरण है।

नीचे दिए गए आदेशों के उदाहरण आप चला सकते हैं। यदि यह पहले से स्थापित नहीं है, तो कमांड स्वचालित रूप से प्लगइन को डाउनलोड और इंस्टॉल करेगा।

वे जिस कार्य को अंजाम देंगे, उसके द्वारा लक्ष्यों की सूची बनाएं

> 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

चरण द्वारा समूह लक्ष्य

> 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

प्लगइन द्वारा समूह के लक्ष्य

> 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

टिप्पणियाँ

डिफ़ॉल्ट रूप से, लक्ष्य उन कार्यों की खोज करते हैं जो उपयोगकर्ता द्वारा आह्वान किए जाने पर चलेंगे mvn deploy। जैसे चरण cleanशामिल नहीं होंगे। खोज में कई चरणों को शामिल करने के लिए, buildplan.tasksसंपत्ति का उपयोग करें :

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

33
यह वास्तव में डिफ़ॉल्ट रूप से मावेन में बनाया जाना चाहिए।
lanoxx

5
पोम को एडजस्ट किए बिना भी काम करता है:mvn fr.jcgay.maven.plugins:buildplan-maven-plugin:list -Dbuildplan.tasks=clean,install,deploy
FibreFoX

1
यह जवाब सही होगा अगर यह FibreFoX की टिप्पणी के साथ शुरू हुआ।
UFL1138

मुझे लगता है कि स्वीकृत उत्तर की तुलना में यह उत्तर बहुत बेहतर है।
पैनायोटिस

मैं @Ianoxx से सहमत हूं कि यह डिफ़ॉल्ट रूप से मावेन में जोड़ा जाना चाहिए। महान प्लग-इन!
मिगेल पर्डल

18

एक उपकरण जो मदद करता है mvn help:effective-pomवह है POM को सभी चरों के साथ प्रिंट करना और सभी पैरेंट POM का विस्तार करना। यह समझने में मदद करता है कि मावेन क्या देखता है। उस से, सभी अतिरिक्त लक्ष्यों (जो आमतौर पर इतने अधिक नहीं हैं) को ढूंढना बहुत आसान है।

बड़ी समस्या निहित लक्ष्य है (यानी जब एक प्लगइन अपने आप ही जीवनचक्र के कुछ चरणों तक पहुंच जाता है)। वास्तव में मावेन को चलाने के बिना इन्हें देखने का कोई आसान तरीका नहीं है। यह मावेन 3 में बेहतर हो जाना चाहिए। तब तक, मावेन को चलाएं -Xजिसके साथ बहुत सारे डिबग आउटपुट और वर्तमान चरण प्रिंट होंगे और कौन से प्लगइन्स निष्पादित किए जाते हैं।


धन्यवाद, हारून, यह मददगार था!
अपग्रेडेडेव

मावेन 3 में यह कैसे बेहतर हो रहा है? क्या यह मौजूदा अल्फा -6 में है?
लार्स कॉर्नेलियुसन

2
जेसन ने मुझे बताया कि नया मावेन 3 वास्तव में इसे शुरू करने से पहले पूरे निर्माण का एक मॉडल तैयार करेगा। इसका मतलब है कि आप कमांड चलाए बिना हुक की जांच (और प्रिंट) कर सकते हैं।
एरोन दिगुल्ला

प्रभावी पोम को प्रत्येक लक्ष्य के वास्तविक बाध्यकारी चरण को दिखाना चाहिए जो वर्तमान में ऐसा नहीं कर रहा है ... आह ..
जंचेन लियू

1

यदि मावेन के साथ नहीं है, लेकिन एम 2 का उपयोग करके आप इसे कोड ब्लॉक का उपयोग करके कर सकते हैं जिसे आप एक ग्रहण प्लगइन में उपयोग कर सकते हैं:


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);
                }

पूर्ण स्रोत को देखें

पहले से ही लागू:

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

यह चरणों के साथ लक्ष्यों की संगति की गणना करने के लिए m2e की क्षमता का उपयोग करता है। मैं इसे मैवेन स्तर पर हल करने का भी प्रयास कर रहा हूं।


न करें पोस्ट लिंक केवल उत्तर देता है
bish

1

मैंने चाड के उत्तर को एक स्क्रिप्ट में रखा (इसलिए मुझे प्लगइन नाम याद नहीं करना चाहिए जो वास्तव में लंबा है)। इसे अपने ~ / बिन / फ़ोल्डर में रखें ताकि आप इसे कहीं भी उपयोग कर सकें।

#!/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;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.