2011-05-12 62 views
3

我有類似如下的POM文件中的配置文件:問題與閱讀的Maven配置文件屬性

<profile> 
      <id>local</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <properties> 
       <application.domain>mydomain.com</application.domain> 
       <application.name>MyApp</application.name> 
      </properties> 
</profile> 

和我讀的屬性此值文件如下所示:

${application.name} 
first.key =\u0627\u0644\u062E\u0627\u0635 \u0628\u0643 ${application.name} \u0627\u0633\u062A\u0645\u0631 \u0645\u0639 \u062D\u0633\u0627\u0628 
second.key=\u061F ${application.name} \u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u062D\u0633\u0627\u0628 \u0639\u0644\u0649 

它的工作原理用第一把鑰匙罰款,價值取代成功,但與第二個和其他鍵喜歡它,它沒有工作,我不知道爲什麼,有什麼想法?

回答

0

也許Maven過濾機制在Unicode轉義上窒息。爲什麼不用UTF-8拼寫呢?

first.key =الخاص بك ${application.name} استمر مع حساب 
second.key=؟ ${application.name} ليس لديك حساب على 
+0

沒有請。屬性文件不能使用UTF-8格式,或者它們可以嗎?它們應該以ascii-7和\ unnnn格式可讀。 Maven應該被配置爲以適當的編碼讀取(其他)過濾的源文件。 – helios 2011-05-12 14:16:30

+0

@helios是否可讀?我不知道你,但我不能讀Unicode轉義(也不是阿拉伯,但這是一個不同的問題:-))。嚴重的是:自從Unicode已經出現以來,我認爲以UTF-8存儲文件是一種很好的做法,我看不出有什麼理由不這樣做(只要你正確配置源編碼) – 2011-05-12 14:20:14

+1

我的評論不是一點都不清楚。我的意思是Java屬性文件不能包含任何非ascii-7字符。如果你想持有一個字符,你必須使用\ u * nnnn *格式。它仍然是ascii-7(和UTF-8在同一時間;-),但java.util.Properties將正確解碼到內存中。如果你尊重它,那麼Maven將會對文件進行過濾(它可以將其ascii-無論是什麼,iso-8859--無論是UTF-8還是UTF-8)。 Maven不會嘗試解碼\ unnnn格式。對於Maven來說,它只是簡單地說吧:數字。 – helios 2011-05-12 14:25:33

1

如果你想在你的屬性替換應用程序的名稱與在Maven的值文件POM你必須:在你的屬性

  1. 使用@變量@格式的文件!這是我理解的Maven變量。
  2. 激活資源(至少對你的屬性文件)資源過濾

你應該定義爲資源篩選正確的文件編碼(UTF-8推薦的,但不管怎麼說,屬性文件必須在ASCII-7你的)。