首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用-P选项激活配置文件,而是激活另一个配置文件。

不使用-P选项激活配置文件,而是激活另一个配置文件。
EN

Stack Overflow用户
提问于 2018-11-07 12:10:39
回答 2查看 50关注 0票数 0

我的理解是,当使用-P选项显式设置配置文件时,它是独占的,无论发生什么情况,该配置文件都应该被激活。

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

这里发生了什么,为什么没有调用cross-compile

我的配置文件配置如下:

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

发布于 2018-11-07 13:31:01

看来我需要显式地禁用build-linux-amd64配置文件。我用

代码语言:javascript
复制
mvn clean compile -P'cross-compile,!build-linux-amd64'

现在,它如预期的那样工作。

票数 0
EN

Stack Overflow用户

发布于 2018-11-08 07:12:42

根据您在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将不再使用概要文件中的编译选项来再次编译代码。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53189218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档