Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Values for os.family in Maven profile activation condition

Maven allows to activate certain build profiles based on the operating system family it runs on, for example:

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

There is a number of question around this: what are allowed values for os.family then? Are they case sensitive? Does Linux come across as Unix? Or unix? And so on.

Where can I find information about allowed values – or, at least, where does Maven take these values from? Environment variables?

like image 838
MaDa Avatar asked Sep 26 '13 08:09

MaDa


People also ask

Which element activates a profile by default in Maven?

Profiles can be activated in the Maven settings, via the <activeProfiles> section. This section takes a list of <activeProfile> elements, each containing a profile-id inside. Profiles listed in the <activeProfiles> tag would be activated by default every time a project use it.


3 Answers

The values are defined in the plexus-utils project, in Os.java. You can see in isOs that the match is case-insensitive, that the value is taken from System.getProperty( "os.name" ) and that you should specify unix to match a Linux platform.

like image 65
Joe Avatar answered Oct 17 '22 00:10

Joe


A very useful Maven command for checking these OS properties on your machine:

mvn enforcer:display-info

Example output on a SunOS / Sparc host:

[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

Example output on a Linux host:

[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
like image 26
dokaspar Avatar answered Oct 16 '22 22:10

dokaspar


OS family values:

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

Other value you can get by run simple program:

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"));
    }
}
like image 22
burtsevyg Avatar answered Oct 16 '22 22:10

burtsevyg