据我了解,当使用-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>
答案 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
命令中添加配置文件选项。