Значения для os.family в состоянии активации профиля Maven

Maven позволяет активировать определенные профили сборки на основе семейства ее операционной системы, например:

<profile>
    <activation>
        <os><family>Windows</family></os>
    </activation>
</profile>

В этом вопросе есть ряд вопросов: что такое допустимые значения для os.family? Они чувствительны к регистру? Линукс встречается как Unix? Или Unix? И так далее.

Где я могу найти информацию о допустимых значениях – или, по крайней мере, где Maven принимает эти значения? Переменные среды?

Ответы

Ответ 1

Значения определены в проекте plexus-utils, в Os.java. Вы можете видеть в isOs, что совпадение не зависит от регистра, что значение берется из System.getProperty( "os.name" ) и что вы должны указать unix для соответствия платформе Linux.

Ответ 2

Значения семейства ОС:

dos
mac
netware
os/2
tandem
unix
windows
win9x
z/os
os/400
openvms

Другое значение, которое вы можете получить, запустив простую программу:

public class SystemProperties {
    public static void main(String[] args) {
        System.out.println("Os name: " + System.getProperty("os.name"));
        System.out.println("Os arch: " + System.getProperty("os.arch"));
        System.out.println("Os version: " + System.getProperty("os.version"));
    }
}

Ответ 3

Очень полезная команда Maven для проверки этих свойств ОС на вашем компьютере:

mvn enforcer:display-info

Пример вывода на хосте SunOS/Sparc:

[INFO] Maven Version: 3.0.4
[INFO] JDK Version: 1.6.0_34 normalized as: 1.6.0-34
[INFO] OS Info: Arch: sparc Family: unix Name: sunos Version: 5.8

Пример вывода на хост Linux:

[INFO] Maven Version: 3.0.4
[INFO] JDK Version: 1.7.0_85 normalized as: 1.7.0-85
[INFO] OS Info: Arch: amd64 Family: unix Name: linux Version: 2.6.32-504.23.4.el6.x86_64

Ответ 4

возможно, стоит обратиться за помощью к maven:

mvn help:system | grep "os\."