未使用-P选项激活配置文件,而是激活了另一个配置文件

时间:2018-11-07 12:10:40

标签: java maven

据我了解,当使用-P选项显式设置概要文件时,它是排他的,并且无论如何都应激活该概要文件。

就我而言,在运行命令mvn clean compile -Pcross-compile之后,cross-compile配置文件被忽略,而build-linux-amd64被激活。

这里发生了什么,为什么没有cross-compile被呼叫?

我的个人资料配置如下:

<profiles>
        <!-- Cross-compile profile (can only be run under linux os) -->
        <profile>
            <id>cross-compile</id>
            <properties>
                <current-os>linux</current-os>
                <current-arch>amd64</current-arch>
                <crossCompile>true</crossCompile>
                <build-target>native-build-cc-all</build-target>
            </properties>
            <build>
                <plugins>
                    <!-- Enforcer: Make sure this can only be run from the Linux OS -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>enforce-os</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <requireOS>
                                            <name>Linux</name>
                                            <family>unix</family>
                                            <arch>amd64</arch>
                                        </requireOS>
                                    </rules>
                                    <failFast>true</failFast>
                                    <fail>true</fail>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- BUILD PROFILE: Linux - x86_64/amd64 -->
        <profile>
            <id>build-linux-amd64</id>
            <activation>
                <os>
                    <name>linux</name>
                    <family>unix</family>
                    <arch>amd64</arch>
                </os>
                <property>
                    <name>!crossCompile</name>
                </property>
            </activation>
            <properties>
                <current-os>linux</current-os>
                <current-arch>amd64</current-arch>
                <build-target>native-build-linux-x86_64</build-target>
            </properties>
        </profile>
</profiles>
  • pom.xml源代码here
  • Travis CI日志here

2 个答案:

答案 0 :(得分:0)

好像我需要显式停用build-linux-amd64配置文件。我用

编译
mvn clean compile -P'cross-compile,!build-linux-amd64'

,现在可以正常使用了。

答案 1 :(得分:0)

从您在Travis日志中提供的内容中,我发现您正在使用以下方式运行maven

mvn --settings scripts/settings.xml install -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true -B -V

在此步骤中,您正在编译没有配置文件选项的代码。

然后您运行

mvn package -Pcross-compile -DskipTests=true -Dgpg.skip -Dmaven.javadoc.skip=true

在此打包步骤中,将编译代码。因此mvn不会使用配置文件中的compile选项来再次编译代码。

因此,请尝试在第一个mvn install命令中添加配置文件选项。

相关问题