我的理解是,当使用 -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>
2 回答
绝地无双
TA贡献1946条经验 获得超4个赞
看起来我需要明确停用build-linux-amd64配置文件。我编译使用
mvn clean compile -P'cross-compile,!build-linux-amd64'
现在它按预期工作。
一只甜甜圈
TA贡献1836条经验 获得超5个赞
根据您在 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/150
提交
取消
