后者方案无需配置<plugin>下的<executions>子标签,配置了也不会产生效果,因为我们通过在命令行直接调用的形式来执行Goal
举例说明,现在想往项目中添加“assembly:single”这个Goal,有两种方案:
1、绑定新Goal到"process-classes"这个Phase
由于default这个Lifecycle中的"process-classes"这个Phase默认未绑定任何Goal,因而可以将新Goal绑定到该Phase上
pom.xml中的配置片段如下:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <id>default-single</id> <phase>process-classes</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <archive> <manifest> <mainClass>fully.qualified.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>现在想执行新Goal,只需要调用default这个Lifecycle中的"process-classes"或者其后的Phase
2、在命令行中直接调用新Goal
pom.xml中的配置片段如下:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>fully.qualified.MainClass</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>现在想执行新Goal,直接在命令行中调用