2014-09-15 15 views
5

Używam Mavena do budowy niektórych projektów i korzystam z wtyczki gMaven, aby zbudować RPM, który zawiera główny artefakt. Chcę tylko, aby Maven próbował zbudować RPM na systemach, które mają rpmbuild, a nie na systemach, które go nie mają, więc zbudowałem dwa osobne profile, jeden który powinien być domyślny i który ma aktywować kiedy jest w rodzinie Unix OS.Dlaczego Maven nie używa oczekiwanego profilu?

Mogłem przysiąc, że przetestowałem to i wszystko działało poprawnie, ale teraz działa na profilu rodziny Unix, nawet gdy buduję na OSX. Jeśli jednak zmienię rodzinę OS na "windows", to z pewnością wie, że nie jest to na komputerze z systemem Windows i dlatego uruchamia domyślny profil.

Oto odnośny fragment mojego pliku pom.xml:

<profiles> 
    <profile> 
     <id>default-profile</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <rpmPhase>none</rpmPhase> 
     </properties> 
    </profile> 
    <profile> 
     <id>rpm-profile</id> 
     <activation> 
      <os> 
       <family>unix</family> 
      </os> 
     </activation> 
     <properties> 
      <rpmPhase>package</rpmPhase> 
     </properties> 
    </profile> 
</profiles> 

W wyjściu Maven:

OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac" 

jednak Maven jest ustawienie rpmPhase na "pakiet", zamiast „none , "co nie jest oczekiwanym zachowaniem.

Czy ktoś może sprawdzić, czy czegoś tu nie ma?

EDIT:

Ponadto, jeśli ustawić rodzinę OS do czegoś, co nie istnieje, lub jeśli I ustosunkowania się blok aktywacji zupełnie następnie domyślny profil jest używany, więc wydaje się, że Maven aktywnie dopasowanie mój OSX z systemem operacyjnym rodziny Unix.

Odpowiedz

1

Po obejrzeniu wygląda na to, że OSX pasuje do "rodziny Unix" pod adresem Maven. Wygląda na to, że check zaznacza dowolny system operacyjny kończący się na "x" jako rodzina Uniksów, co wydaje się głupim sposobem na zrobienie tego. Niestety, wydaje się, że nie możesz wykonywać żadnych operatorów ORAZ ani OR, więc musisz wybrać jedną rodzinę i tylko jedną rodzinę. Z tego powodu zmieniłem uniksowy na! Mac, aby przynajmniej uniknąć problemu w OSX. Byłoby to oczywiście nadal widoczne, gdyby kompilacja działała w systemie Windows.

+0

Cóż, OSX to system operacyjny UNIX - bazuje na BSD. – OrangeDog

5

miałem ten sam problem, heres JIRA emisyjny wyjaśniając problem:

https://jira.codehaus.org/browse/MNG-4983

Mówią, że rzeczywiście nie jest błąd. Oto sposób obejścia tego problemu, jeśli chcesz, aby OSX i Unix były oddzielne:

<os> 
    <family>unix</family> 
    <name>!mac os x</name> 
</os> 
Powiązane problemy