2011-03-31 49 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