2012-02-03 41 views
0

我有一個XML文件,其中保留了我的應用程序的相關默認值,例如服務器URL。我使用Maven構建我的應用程序。我的目標是編輯XML並根據我將使用的環境(如開發,測試和生產環境)更改服務器URL。從Maven編輯plist XML文件?

XML文件是plist類型,不能更改。

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>ServerURL</key> 
    <string>https://server_url</string> 

    <!-- Other properties goes here --> 

</dict> 
</plist> 

有沒有人知道如何解決這個問題?

我發現了 xmltask但沒有工作的例子就如何這樣的事情。我想要一些非常簡單的東西來執行這樣簡單的任務。是否有一個簡單的Maven插件修復了這個問題?我知道XPath,使用簡單的XPath表達式來更改XML文件會很好。

回答

2

我建議使用配置文件和maven-resources-plugin的資源過濾此任務。

例如,在你的XML配置文件,您可以指定服務器的URL是這樣的:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>ServerURL</key> 
    <string>${server.url}</string> 

    <!-- Other properties goes here --> 

</dict> 
</plist> 

同時,在你的pom.xml文件,你應該定義server.url財產

<properties> 
    <server.url>http://default_url</server.url> 
</properties> 

和一個(或多個)配置文件將修改其值

<profiles> 
    <profile> 
    <id>custom</id> 
    <properties> 
     <server.url>http://custom_url</server.url> 
    </properties> 
    </profile> 
</profiles> 
+0

對不起,但此解決方案似乎並不可用,sinc我的XML格式已修復。我編輯我的問題是有點特定的。但它提供了一個很好的答案:) – 2012-02-03 11:08:17

+0

格式可以固定,但內容應該靈活=)將元素值替換爲$ {server.url}。當您複製資源時,請使用過濾來將屬性替換爲實際值。請參閱http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html文章以供參考。 – 2012-02-03 11:42:51

+0

我不確定我是否關注你。鑑於格式是plist和標籤必須是_ _,我不明白這種解決方案將如何爲我工作。 – 2012-02-03 12:05:40