Skip to content

Latest commit

 

History

History
47 lines (33 loc) · 2.48 KB

hudi编译语句.md

File metadata and controls

47 lines (33 loc) · 2.48 KB

关于 -Dspark3.3 的理解以及它能够触发 profile

Maven 构建过程中,可以通过使用 -D 选项来设置系统属性(system properties)。例如,在以下命令中:

mvn clean package -DskipTests -Dspark3.3

使用了 -Dspark3.3 语法来设置一个名为 spark3.3 的系统属性,但没有指定其值。这种写法相当于将 spark3.3 属性的值设为了默认值“true”

如果存在某个 Maven profile 定义了如下的激活器(activation):

<profiles>
    <profile>
        <id>my-profile</id>
        <activation>
            <property>
                <name>spark3.3</name>
                <value>true</value>
            </property>
        </activation>
        <build>
            <!-- build configuration goes here -->
        </build>
    </profile>
</profiles>

在这个例子中,my-profile profile 定义了一个触发器(activation),它检查名为spark3.3的系统属性是否被设置为"true"。如果是,则激活该 profile 中定义的配置。

因此,在执行以下命令时:

mvn clean package -DskipTests -Dspark3.3

Maven 会将spark3.3系统属性的值设为默认值"true",并激活my-profile profile 中定义的配置。如果未设置-Dspark3.3选项,或者将其设置为其他值,则不会激活该 profile

需要注意的是,这种写法的原理是基于 Maven 的规则:如果系统属性被设置了,但没有指定其值,则默认值为"true"。实际上,这种写法并不太清晰和推荐,因为它在代码中隐含了一个默认值,可能会引起一些不必要的混淆和问题。

当我们设置-Dspark3.3时,即使没有指定其值,Maven 也会将spark3.3系统属性的值设为默认值"true"。这个默认值可以被用来触发某些 profile 的激活器。

例如,在上面的例子中,如果没有设置-Dspark3.3选项,或者将其设置为其他值,那么spark3.3系统属性的值将不会被设置为"true",从而不满足my-profile profile 定义的触发器条件,因此该 profile 不会被激活。

总之,使用-D选项来设置系统属性是非常灵活和方便的,可以通过设置系统属性的值来触发特定的构建配置,同时也可以通过 profile 的触发器来根据不同的条件自动选择合适的 build 配置。在使用-D选项时,最好明确地指定所需的属性名称和值,以避免出现不必要的问题。