2010-11-17 44 views
3

在Maven的2,我是能夠設置配置文件屬性這樣的:Maven 3配置文件屬性 - 增強或錯誤?

<profiles> 
    <profile> 
     <id>test</id> 
     <properties> 
      <region>test</region> 
      <application-url>http://localhost:8080/myTestApp</application-url> 
      <cookie-name>TestCookie</cookie-name> 
     </properties> 
    </profile> 

    <profile> 
     <id>production</id> 
     <properties> 
      <region>production</region> 
      <application-url>http://prodserver/myProductionApp</application-url> 
      <cookie-name>ProductionCookie</cookie-name> 
     </properties> 
    </profile> 
<profiles> 

在編譯時將Maven的在我的春天豆類替換這些配置值。舉例來說,如果我有這樣定義一個Spring bean:

<bean id="cookie-name" class="java.lang.String"> 
    <constructor-arg value="${cookie-name}"/> 
</bean> 

和我指定-P test當我生成項目時,Maven將設置一組bean的樣子

<bean id="cookie-name" class="java.lang.String"> 
    <constructor-arg value="TestCookie"/> 
</bean> 

,當我指定-P production,行家再次替換爲正確的屬性

<bean id="cookie-name" class="java.lang.String"> 
    <constructor-arg value="ProductionCookie"/> 
</bean> 

正如我們所支持的環境和客戶數量增加了文字,我一直充分利用這一功能。

我試過升級到Maven 3,但似乎這種行爲已經消失或被打破。我似乎無法找到它被替換的東西。

任何人有任何見解如何或如果我可以升級到Maven3,同時保持這種行爲?

+0

你在POM或的profiles.xml文件中定義的配置文件? – khmarbaise 2010-11-17 17:02:02

+0

我直接在POM中定義配置文件。 – Vinnie 2010-11-17 18:11:14

回答

4

我試過升級到Maven 3,但似乎這種行爲已經消失或被破壞。我似乎無法找到它被替換的東西。

資源過濾只是正常工作與Maven 3.鑑於以下項目結構:

 
. 
├── pom.xml 
└── src 
    ├── main 
    │   ├── java 
    │   │   └── com 
    │   │    └── stackoverflow 
    │   │     └── App.java 
    │   └── resources 
    │    └── beans.xml 
    └── test 
     └── java 
      └── com 
       └── stackoverflow 
        └── AppTest.java 

用下面pom.xml

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.stackoverflow</groupId> 
    <artifactId>Q4206883</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    ... 
    <build> 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     <filtering>true</filtering> 
     </resource> 
    </resources> 
    </build> 
    <profiles> 
    <profile> 
     <id>test</id> 
     <properties> 
     <region>test</region> 
     <application-url>http://localhost:8080/myTestApp</application-url> 
     <cookie-name>TestCookie</cookie-name> 
     </properties> 
    </profile> 
    <profile> 
     <id>production</id> 
     <properties> 
     <region>production</region> 
     <application-url>http://prodserver/myProductionApp</application-url> 
     <cookie-name>ProductionCookie</cookie-name> 
     </properties> 
    </profile> 
    </profiles> 
</project> 

哪裏beans.xml包含:

<bean id="cookie-name" class="java.lang.String"> 
    <constructor-arg value="${cookie-name}"/> 
</bean> 

與任何配置文件運行Maven例如:

 
$ mvn -P test process-resources 
[INFO] Scanning for projects... 
... 

產生預期的結果:

$ cat target/classes/beans.xml 
<bean id="cookie-name" class="java.lang.String"> 
    <constructor-arg value="TestCookie"/> 
</bean> 

測試了:

 
$ mvn --version 
Apache Maven 3.0 (r1004208; 2010-10-04 13:50:56+0200) 
Java version: 1.6.0_22 
Java home: /usr/lib/jvm/java-6-sun-1.6.0.22/jre 
Default locale: en_US, platform encoding: UTF-8 
OS name: "linux" version: "2.6.35-22-generic" arch: "i386" Family: "unix" 

如果這不是你所得到的,請提供一些允許重現的部分。

相關問題