2012-08-22 14 views
9

io sono in riferimento a "Maven: The Complete Reference" e in particolare la sezione riguardante i profili che documenta l'uso di un tag <properties... all'interno del <profile... tag: see hereUtilizzando il tag proprietà entro Maven profilo

<profile> 
      <id>development</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
       <property> 
        <name>environment.type</name> 
        <value>dev</value> 
       </property> 
      </activation> 
      <properties> 
       <database.driverClassName>com.mysql.jdbc.Driver</database.driverClassName> 
       <database.url> 
        jdbc:mysql://localhost:3306/app_dev 
       </database.url> 
       <database.user>development_user</database.user> 
       <database.password>development_password</database.password> 
      </properties> 
     </profile> 

quello che non sono sicuro circa è ciò che accade quando il comando viene eseguito mvn install -Denvironment.type=dev:

  • sarà questo creare un file .properties?
  • Se non come e dove tomcat (ad esempio) leggere le singole proprietà quando l'app viene testata in dev?
+0

Sto solo provando a seguire la catena qui attraverso Maven e Spring e questa è esattamente la domanda e la risposta di cui avevo bisogno! Ben fatto! –

risposta

17

Questo creerà un file .properties?

No, non lo farà. Questo imposterà le proprietà usate da Maven. Questo è, con mvn install -Denvironment.type=development maven userebbe il valore 'development_user' per la variabile 'database.user' (che puoi usare come $ {database.user} in poms e risorse filtrate).

Se non come e dove verrà letto Tomcat (ad esempio) le singole proprietà quando l'app viene testata in dev?

L'idea è di dire a Maven di filtrare (e modificare) le risorse che si desidera personalizzare in base al profilo (properties.files).

Quindi, per prima cosa hai da dire Maven per filtrare le risorse:

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

quindi modificare i file di immobili da utilizzare variabili Maven. Ad esempio, il tuo file di proprietà db sarà simile al seguente:

database.driverClassName=${database.driverClassName} 
database.url=${database.url} 
#... 
+0

Ho trovato utile [i documenti] (http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html) dopo aver letto questa risposta: sembra che "filtrare" significhi fondamentalmente che maven attraversa e sostituisce $ {somename} con i suoi valori su build ** in qualsiasi file **. Puoi vederlo nell'output della build. Ottima risposta: ho davvero colmato le lacune per me. –