Профиль не активируется с параметром -P, вместо него активируется другой профиль - PullRequest
0 голосов
/ 07 ноября 2018

Насколько я понимаю, когда профиль явно установлен с опцией -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>

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Из того, что вы указали в журнале 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 голосов
/ 07 ноября 2018

Похоже, мне нужно явно деактивировать профиль build-linux-amd64. Я скомпилировал, используя

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

и теперь работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...