我对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 目标,可以从Web服务生成工件。它发生在我编译项目之前。这个XML怎么能告诉我这个目标应该在哪里执行?这对我来说似乎并不清楚。
我的意思是我说的是,我希望像“在目标-xyz之后绑定到流程资源”这样的东西。这对我来说似乎有点模糊。
答案 0 :(得分:6)
不幸的是,pom.xml无法告诉你关于插件目标是如何绑定的所有内容。插件可以定义要绑定的默认生命周期阶段,这不会反映在pom.xml中。查看jaxws-maven-plugin的文档,我看到了wsimport目标的这一行:
默认绑定到生命周期阶段:generate-sources。
您可以通过向插件<phase>
添加<execution>
元素来覆盖要绑定的生命周期阶段。例如,如果您希望在打包工件之前正确运行目标(不确定为什么会这样,但在此示例中请耐心等待),您可以在执行<phase>package</phase>
之后指定<id>
我建议您查看官方Maven guide to configuring plugins了解更多详情。
你也想阅读: