2011-03-31 47 views
0

我不明白maven使用的標記的重複分組。我更習慣於在行動或任務更明確的地方。通過下面列出的maven pom文件,聲明式maven語法/語言,我不明白重複的構建標記

爲什麼在配置文件標籤內有「構建」部分?然後到底部是另一套「構建」部分?

<profiles> 
     <profile> 
      <id>local</id>   
      <activation> 
       <os> 
        <family>windows</family> 
       </os> 
      </activation> 
<build> 
       <plugins> 
        <!-- Clean all jars before build --> 
        <plugin> 
         <artifactId>maven-clean-plugin</artifactId> 

... 

<build> 
     <finalName>${project.artifactId}</finalName> 
     <sourceDirectory>src</sourceDirectory> 
     <testSourceDirectory>test</testSourceDirectory> 
     <resources> 
... 
... 
    <plugins> 
      <!-- Compiler plugin --> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${java.source.version}</source> 
        <target>${java.target.version}</target> 
       </configuration> 
      </plugin> 

     </plugins> 

    </build> 
</project> 

回答

1

您似乎需要了解配置文件。

一個基本的maven構建有一個(或零)構建元素。在零情況下,它只會將標準生命週期應用於標準位置中的java源和資源。

配置文件允許您聲明具有不同設置的替代版本。當你運行'mvn -Pfoo'時,你激活名爲'foo'的配置文件。

當您希望更改該配置文件中的構建元素中的設置時,您在配置文件中放入<build/>元素。例如,通過更改傳遞給某個插件的選項。

你問,'maven clean'是做什麼的。

'clean'是生命週期的名稱。你會發現它記錄在http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

清潔生命週期分爲三個階段。當你說'mvn clean'時,它會按照這個順序運行綁定到這三個階段的所有插件執行。

http://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM記錄超級pom,因此默認情況下會告訴您哪些插件執行被綁定到這三個階段。

+0

另一個問題,我猜maven沒有定義「任務」,所以當我做'mvn clean'時,該特定命令行命令的配置會被使用嗎? – 2011-03-31 15:05:38