Я как бы понимаю большинство вещей в 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". Мне все это кажется немного туманным.
К сожалению, pom.xml не может рассказать вам все о том, как привязаны цели плагина. Плагин может определить фазу жизненного цикла по умолчанию для привязки, и это не будет отражено в pom.xml. Глядя на документацию для jaxws-maven-plugin, я вижу эту строку для цели wsimport:
Привязывается по умолчанию к фазе жизненного цикла: generate-sources.
Вы можете переопределить фазу жизненного цикла для привязки, добавив элемент <phase>
в плагин <execution>
. Например, если вы хотите, чтобы цель выполнялась прямо перед упаковкой артефакта (не знаете, почему вы это сделали, но несите со мной в этом примере), вы можете указать <phase>package</phase>
после выполнения <id>
Я бы порекомендовал взглянуть на официальное руководство Maven по настройке плагинов для более подробной информации.
Также вы хотели бы прочитать: