2015-10-27 10 views
6

Ich habe folgendes pom.xml:Maven Ressource Filterung mit Profileigenschaften

<project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>mycompany</groupId> 
    <artifactId>resource-fail</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <properties> 
     <foo.bar>BazBat</foo.bar> 
    </properties> 
    <build> 
     <resources> 
      <resource> 
       <filtering>true</filtering> 
       <directory>src/main/resources</directory> 
      </resource> 
     </resources> 
    </build> 
    <profiles> 
     <profile> 
      <id>Development</id> 
      <!-- 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      --> 
      <properties> 
       <foo.bar>Development</foo.bar> 
      </properties> 
     </profile> 
    </profiles> 
</project> 

Beachten Sie, dass das activation Element auf der profile wird

kommentiert out

ich in src/main/java/application.properties folgenden haben die auch

myproperty=${foo.bar} 

Also was ich Maven zu tun erwartet, ist einfach ${foo.bar} durchersetzen 210, es sei denn, das Entwicklungsprofil activiated, dann erwarte ich Maven ${foo.bar} ersetzen mit Development

Als ich mvn package laufen sie den Wert auf BazBat setzt. Gut, die Ressourcenfilterung funktioniert wie erwartet.

Allerdings, wenn ich mvn package -P Development führen Sie es setzt den Wert auf BazBat

Dinge weiter zu verwirren, wenn uncomment das activation Element auf dem Profil und führen mvn package es ${foo.bar} zu Development

Ich habe laufen sogar eingestellt werden mvn help:active-profiles package, damit es den Namen des aktiven Profils ausgibt, und in beiden obigen Szenarien heißt es, dass das Entwicklungsprofil aktiv ist, die Filterung jedoch immer noch nicht funktioniert, ohne dass das Flag activeByDefault gesetzt ist.

Fazit:

  • Maven überschreibt richtig Eigenschaften mit Werten aus dem Profil, wenn das Profil activeByDefault
  • Maven ist nicht Überschreibung der Eigenschaft ist, wenn ich das Profil über den Schalter Befehlszeile aktivieren

Was ist los?

Meine Umgebung:

> mvn -version 
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T11:29:23-06:00) 
Maven home: C:\apache-maven-3.2.5 
Java version: 1.8.0_65, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.8.0_65\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos" 

Update: ich auf die neuesten Maven aktualisiert habe (3.3.3) - das Problem weiterhin besteht. Meine neue Umgebung:

> mvn -version 
Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T06:57:37-05:00) 
Maven home: C:\apache-maven-3.3.3 
Java version: 1.8.0_65, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.8.0_65\jre 
Default locale: en_US, platform encoding: Cp1252 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos" 

Antwort

-2

Sie müssen den Raum zwischen -P und Entwicklung entfernen, wenn Sie ausführen: mvn Paket -PDevelopment