声明性的maven语法/语言,我不明白重复的构建标记

时间:2011-03-31 14:55:34

标签: plugins maven

我不明白maven使用的标签的重复分组。我更习惯于行动或任务更明确的地方。使用下面列出的maven pom文件,

为什么profiles标签中有'build'部分?接下来是另一组“构建”部分?

<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 个答案:

答案 0 :(得分: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记录了super-pom,因此告诉你默认情况下哪些插件执行绑定到这三个阶段。