2016-07-19 148 views
2

行家簡介欲設置基於操作系統類型的某些屬性,所以我在下面我pom.xml選擇從操作系統系列

<project ...> 
    <profiles> 
     <profile> 
      <id>KenMacbook</id> 
      <activation> 
       <os><family>mac</family></os> 
      </activation> 
      <properties> 
       <test.r.version>3.3</test.r.version> 
      </properties> 
     </profile> 
     <profile> 
      <id>LinuxBox</id> 
      <activation> 
       <os><family>unix</family></os> 
      </activation> 
      <properties> 
       <test.r.version>3.2</test.r.version> 
      </properties> 
     </profile> 
    </profiles> 
    ... 
</project> 

在我的Mac,我檢查什麼配置文件被激活:

% mvn help:active-profiles | grep -v INFO 
Active Profiles for Project 'com.foo:bar:jar:2.0.3-SNAPSHOT': 

The following profiles are active: 

- nexus (source: external) 
- KenMacbook (source: com.foo:bar:2.0.3-SNAPSHOT) 
- LinuxBox (source: com.foo:bar:2.0.3-SNAPSHOT) 

因此,LinuxBox配置文件看起來像<activation>未成功排除Mac上的配置文件。我是否誤解了個人資料選擇如何工作?

Maven的細節:

% mvn --version 
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T10:41:47-06:00) 
Maven home: /usr/local/Cellar/maven/3.3.9/libexec 
Java version: 1.7.0_75, vendor: Oracle Corporation 
Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "mac os x", version: "10.11.5", arch: "x86_64", family: "mac" 

回答

0

當我從this段看到,它證明了這兩個配置文件

+0

呀,因爲也是由我的'MVN幫助所示:主動profiles'輸出。那麼,如何選擇非Mac Unix?文件佈局非常不同,所以這一定是一個共同的需求。 –

+1

我也強烈反對Maven對Unix類平臺的規範測試:'OS_NAME.endsWith(「x」)'。這就是爲什麼'mac os x''被拉進來的原因。 –

+0

也許與版本區分?不是最新的解決方案,但我現在不能想到其他問題 – Apostolos

2

正確的解決方法是指定的名稱。

<activation> 
      <os> 
       <family>unix</family> 
       <name>Linux</name> 
      </os> 
</activation> 

一個完整的跨平臺解決方案是:

<profile> 
    <id>mac</id> 
    <activation> 
    <os> 
     <family>mac</family> 
    </os> 
    </activation> 
     <modules> 
     <module>tests/org.eclipse.swt.tests.cocoa</module> 
     </modules> 
</profile> 
<profile> 
    <id>unix</id> 
    <activation> 
    <os> 
     <family>unix</family> 
     <name>Linux</name> 
    </os> 
    </activation> 
     <modules> 
     <module>tests/org.eclipse.swt.tests.gtk</module> 
     </modules> 
</profile> 
<profile> 
    <id>windows</id> 
    <activation> 
    <os> 
     <family>windows</family> 
    </os> 
    </activation> 
     <modules> 
     <module>tests/org.eclipse.swt.tests.win32</module> 
     </modules> 
</profile> 

來源:http://maven.40175.n5.nabble.com/Profile-activation-for-mac-and-linux-td3263043.html