2012-02-03 73 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