Подтвердить что ты не робот

Команда Maven перечисляет фазы жизненного цикла вместе со связанными целями?

Я просто изучаю Maven, и поэтому это может быть очевидным, но я не могу найти простой способ перечислить цели, связанные для каждого этапа жизненного цикла maven для данного проекта.

Я видел, что фазы жизненного цикла по умолчанию Maven и соответствующие цели по умолчанию документированы здесь. До сих пор я понимаю, что каждый pom.xml может привязывать дополнительные цели к каждой фазе жизненного цикла.

Итак, существует ли команда mvn для определения целей, которые будут выполняться для каждой фазы жизненного цикла для данного проекта? Если нет, я думаю, мне просто нужно просмотреть pom.xml для каждого нового проекта maven, чтобы понять это?

4b9b3361

Ответ 1

mvn help:describe -Dcmd=compile (или любая другая действительная фаза)

Ответ 2

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

Ответ 3

Один инструмент, который помогает, - это mvn help:effective-pom Он будет печатать POM со всеми переменными и все родительские POM-расширения. Это помогает понять, что видит Maven. Из этого довольно легко найти все дополнительные цели (которых обычно не так много).

Большей проблемой являются неявные цели (например, когда плагин автоматически подключается к некоторым этапам жизненного цикла). Нет простого способа увидеть их без фактического запуска Maven. Это должно стать лучше в Maven 3. До тех пор, запустите Maven с помощью -X, который будет печатать много отладочного вывода плюс текущую фазу и какие плагины выполняются.

Ответ 4

Если вы не используете Maven, но используете m2e, вы можете сделать это, используя блок кода, который вы можете использовать в плагине 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);
                }

Посмотрите на полный .

Уже реализовано в:

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

Он использует способность m2e для вычисления объединения целей с фазами. Я также пытаюсь решить это на уровне maven.