Все еще не понимают, каковы цели в Maven

1

Я как бы понимаю большинство вещей в Maven, но попытка понять цели очень расстраивает. Основная проблема заключается в том, что Maven, похоже, хочет скрыть все и что-то связанное с целями.

  • Если у меня есть плагин с исполнением, и это выполнение имеет цель, то цель прикрепляется где-то рядом с конкретными другими целями?
  • Как он знает, на какой фазе он принадлежит?
  • Это как-то заменяет какую-то другую цель?

Дело в точке:

<plugins>
    <plugin>
        <groupId>org.jvnet.jax-ws-commons</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>2.3</version>
        <executions>                    
            <execution>
                <id>wsimport-from-jdk</id>
                <goals>
                    <goal>wsimport</goal>
                </goals>
                <configuration>
                    <executable>${tool.wsimport}</executable>
                    <wsdlUrls>
                        <wsdlUrl>http://WorkPC:8080/server-web/AirlineWS?wsdl</wsdlUrl>     
                    </wsdlUrls>
                    <packageName>com.bluewalrus</packageName>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

Это цель wsImport, которая генерирует артефакты из веб-службы. Это происходит до того, как я скомпилирую свой проект. Как, возможно, этот XML скажет мне, где должна выполняться эта цель? Мне это просто не кажется ясным.

Я имею в виду то, что я говорю, это то, что я ожидаю что-то вроде "привязать к процессам-ресурсы сразу после цели-xyz". Мне все это кажется немного туманным.

Теги:
maven

1 ответ

6

К сожалению, pom.xml не может рассказать вам все о том, как привязаны цели плагина. Плагин может определить фазу жизненного цикла по умолчанию для привязки, и это не будет отражено в pom.xml. Глядя на документацию для jaxws-maven-plugin, я вижу эту строку для цели wsimport:

Привязывается по умолчанию к фазе жизненного цикла: generate-sources.

Вы можете переопределить фазу жизненного цикла для привязки, добавив элемент <phase> в плагин <execution>. Например, если вы хотите, чтобы цель выполнялась прямо перед упаковкой артефакта (не знаете, почему вы это сделали, но несите со мной в этом примере), вы можете указать <phase>package</phase> после выполнения <id>

Я бы порекомендовал взглянуть на официальное руководство Maven по настройке плагинов для более подробной информации.

Также вы хотели бы прочитать:

  • 0
    спасибо, отличное объяснение. Но есть ли способ контролировать, где он выполняется В фазе, или это в значительной степени случайно?
  • 1
    Я считаю, что единственное упорядочение в пределах фазы, которую вы можете сделать, это определить один плагин над другим в pom.xml. Кроме этого, у вас нет большого выбора, в каком порядке цели будут выполняться в течение фазы. Порядок не должен быть случайным для каждого прогона - он должен поддерживать одинаковый порядок между каждым прогоном.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню