2011-07-27 11 views
17

Używam Maven 3.0.3. Potrzebuję zdefiniować zmienną w moim skrypcie ("env"). Mam sekcji <profiles> w moim pom w którym mogę zdefiniować zmienną za <profile> elementu ...Aktywowanie profilu domyślnie

<profile> 
    <id>qa</id> 
    <properties> 
    <env>qa</env> 
    ... 
    </properties> 
</profile> 

W moim pom.xml, jak mogę aktywować profil tylko wtedy, gdy żaden nie został określony przez „-P” opcja linii poleceń (a więc ustawić zmienną, jeśli nie została zdefiniowana)? Próbowałem poniżej

<profile> 
    <id>dev</id> 
    <activation> 
    <activeByDefault>true</activeByDefault> 
    <property> 
     <name>env</name> 
     <value>dev</value> 
    </property> 
    </activation> 
    <properties> 
    <url>http://localhost:8080/manager</url> 
    <server>nnadbmon-dev-tomcat</server> 
    </properties> 
</profile> 

ale uruchamiając komendę „mvn skompilować” nie dlatego, że plugin egzekutor skonfigurować wymaga, aby zdefiniować zmienną „env”. Oto kod biegnę dla mojego plugin Enforcer ...

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
    <execution> 
     <id>enforce-property</id> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <requireProperty> 
      <property>env</property> 
      <message>Environment missing. This should be either dev, qa, or prod, specified as part of the profile (pass this as a parameter after -P).</message> 
      <regex>^(dev|qa|production)$</regex> 
      <regexMessage>Incorrect environment. Expecting one of dev, qa, or prod.</regexMessage> 
      </requireProperty> 
     </rules> 
     <fail>true</fail> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

Nie jest jasne, czego chcesz. Czy chcesz podać domyślną właściwość "env"? – bmargulies

+0

Tak, chcę podać wartość domyślną dla właściwości env. – Dave

+1

proszę opublikować swoją konfigurację egzekutora. W rzeczywistości nie zdefiniowałeś własności "env". Po prostu ustawiłeś profil, by działał, gdyby taka właściwość istniała i ma określoną wartość. Możesz dodać domyślną właściwość env do elementu właściwości z inną wartością. – bmargulies

Odpowiedz

0

Dokumentacja co myślę chcesz to http://maven.apache.org/pom.html#Activation

+0

Witam, zredagowałem moje pytanie, aby dołączyć to, co próbowałem (zasadniczo dodając " true"), ale moja kompilacja nadal się nie udaje, jeśli zostawiam dyrektywę "-P" (ponieważ wtyczka egzekucyjna nie jest znajdowanie właściwości "env"). Jeśli możesz podać dodatkowe informacje i przykłady, jest to właściwe, - Dave – Dave

+1

@Dave Możesz wpisać w: mvn help: active-profiles, aby zobaczyć, które profile są domyślnie aktywne. – Stephane

41

wiem, że to było dawno temu, ale miałem ten problem właśnie teraz, więc ... Powinieneś to zrobić:

<profile> 
    <id>dev</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
     <env>dev</env> 
     <url>http://localhost:8080/manager</url> 
     <server>nnadbmon-dev-tomcat</server> 
    </properties> 
</profile> 
+5

Uwaga: profile activeByDefault nie są wybierane, jeśli inne profile są aktywniej wybierane za pomocą innych reguł aktywacji lub linii poleceń -P. –

Powiązane problemy