2014-09-15 12 views
5

Ich benutze Maven um ein paar Projekte zu erstellen und benutze das gMaven Plugin, um ein RPM zu erstellen, das das Hauptartefakt enthält. Ich möchte nur, dass Maven versucht, die RPM auf Systemen mit rpmbuild zu erstellen, und nicht auf Systemen, die dies nicht tun. Daher habe ich zwei separate Profile erstellt, eines, das standardmäßig sein soll und eines, das in einer Unix-Familie aktiviert werden soll OS.Warum benutzt Maven das erwartete Profil nicht?

Ich hätte schwören können, dass ich es getestet habe und alles funktionierte korrekt, aber jetzt läuft es das Unix-Familienprofil auch wenn ich auf OSX baue. Wenn ich jedoch die Betriebssystemfamilie des Profils in "Windows" ändere, weiß es definitiv, dass es sich nicht auf einem Windows-Computer befindet und daher das Standardprofil ausführt. Hier

ist der entsprechende Abschnitt meiner pom.xml-Datei:

<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> 

Im Maven Ausgabe:

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

jedoch Maven setzt rpmPhase auf "Paket" statt „none "Das ist nicht das erwartete Verhalten.

Kann jemand sehen, ob ich etwas hier vermisse?

EDIT:

auch sicher, dass, wenn ich das OS Familie zu etwas, das nicht existiert, oder wenn ich den Aktivierungsblock insgesamt kommentieren Sie dann das Standardprofil verwendet, so scheint es, dass Maven aktiv passende mein OSX mit einem Unix-Betriebssystem.

Antwort

1

Also nach dem Umschauen scheint, dass OSX "Unix-Familie" unter Maven entspricht. Anscheinend kennzeichnet die Überprüfung jedes OS, das auf "x" endet, als Unix-Familie, was wie eine dumme Art erscheint, es zu tun. Leider scheint es, dass Sie keine AND- oder OR-Operatoren ausführen können. Sie müssen also nur eine Familie und nur eine Familie auswählen. Aus diesem Grund habe ich Unix zu! Mac geändert, um das Problem unter OSX zu vermeiden. Es würde natürlich immer noch auftauchen, wenn der Build unter Windows läuft.

+0

Nun OSX ist ein UNIX-Betriebssystem - es basiert auf BSD. – OrangeDog

5

hatte ich das gleiche Problem, heres ein JIRA Problem Erläuterung des Problems:

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

Sie sagen, es ist eigentlich ein Fehler nicht. Hier ist eine Problemumgehung, wenn Sie OSX und Unix getrennt haben müssen:

<os> 
    <family>unix</family> 
    <name>!mac os x</name> 
</os> 
Verwandte Themen