2015-10-22 143 views
3

我有一個關於maven插件中執行ID的簡單問題。Maven插件執行ID

<groupId>org.codehaus.mojo</groupId> 
    <artifactId>gwt-maven-plugin</artifactId> 
    <version>2.7.0</version> 
    <executions> 
    <execution> 
     <id>gwt-process-resources</id> 
     <goals> 
      <goal>i18n</goal> 
      <goal>generateAsync</goal> 
     </goals> 
    </execution> 
</executions> 

有人可以向我解釋這executionId做什麼?目標如何觸發?我可以直接調用「gwt-process-resources」來執行這兩個目標嗎?如果是的話,我該怎麼做?

回答

5

<id></id>僅供您存在才能區分其他執行。這個標籤將在您進行實際構建時顯示。

執行示例將調用您指定的兩個目標:i18ngenerateAsync

如果插件未綁定到特定階段process-resourcespackageinstall等),你的執行將不會進行。插件的文檔應該說明是否是這種情況。

您可以指定/使用<phase>標籤覆蓋默認階段:

... 
<execution> 
    <id>gwt-process-resources</id> 
    <phase>process-resources</phase> <!-- If you need to override --> 
    <goals> 
    <goal>i18n</goal> 
    <goal>generateAsync</goal> 
    </goals> 
</execution> 
... 

...

目標要麼觸發:

  • 自動(隱含的默認階段或明確如上)
  • 通過命令行執行:mvn <plugin name>:<goal>
+0

好的,謝謝你爲這個澄清! 我缺少的主要原因是「自動(默認階段隱式......)」「i18n」目標和「generateAsync」不觸發,如果沒有寫在pom中,並且它們是觸發的,因爲它們都有一個默認執行階段! ' 國際化 ..... 產生來源 .... ' 謝謝:) – Florian

2
here is a very simple explanation 

1. You cant do this mvn gwt-process-resources , (gwt-process-resources juste id) 
if not <phase> declaration in pom (look documentation and find default) 

if you look documentation : 
https://gwt-maven-plugin.github.io/gwt-maven-plugin/plugin-info.html 
- gwt:i18n Binds by default to generate-sources. 
- gwt:generateAsync Binds by default to the lifecycle phase: generate-sources. 

2. How are goals triggered? 

if u do mvn compile => compile > generate-sources in maven lifecycle 
=> maven execute gwt:i18n after gwt:generateAsync  
=> executed in the order they are declared in pom.xml because are some phase "generate-sources" 
+0

這是一個很好的解釋,我的Maven知識缺失的「默認綁定「一些插件的目標的功能:) – Florian