Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Maven编辑plist XML文件?_Xml_Maven_Xpath_Maven Plugin_Edit - Fatal编程技术网

从Maven编辑plist XML文件?

从Maven编辑plist XML文件?,xml,maven,xpath,maven-plugin,edit,Xml,Maven,Xpath,Maven Plugin,Edit,我有一个XML文件,其中保存了应用程序的相关默认值,例如服务器URL。我使用Maven构建我的应用程序。我的目标是编辑XML并根据我将使用的环境(例如开发、测试和生产环境)更改服务器URL XML文件的类型为plist,无法更改 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/Propert

我有一个XML文件,其中保存了应用程序的相关默认值,例如服务器URL。我使用Maven构建我的应用程序。我的目标是编辑XML并根据我将使用的环境(例如开发、测试和生产环境)更改服务器URL

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>

服务器URL
https://server_url
有人知道如何解决这个问题吗


我已经找到了xmltask,但是没有关于如何实现类似的功能的工作示例。我想要一些非常简单的东西来完成像这样的简单任务。是否有一个简单的Maven插件可以解决这个问题?我知道XPath,最好使用一个简单的XPath表达式来更改XML文件。

我建议使用配置文件和资源筛选来完成此任务

例如,在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>

服务器URL
${server.url}
同时,在pom.xml文件中,您应该定义server.url属性

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

http://default_url
以及一个(或多个)将修改其值的配置文件

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

习俗
http://custom_url

很抱歉,由于我的XML格式是固定的,因此此解决方案似乎不可用。我把我的问题编辑得有点具体。但这是一个很好的答案,前提是我有一个模糊的小问题:)格式可以固定,但内容应该灵活=)将元素值替换为${server.url}。复制资源时,请使用筛选将属性替换为实际值。请参阅文章以供参考。我不确定是否理解您的意思。由于格式是plist,标记必须是plist,我看不出这个解决方案对我有什么作用。Maven将根据使用的配置文件自动将${server.url}属性替换为正确的值。例如,如果您使用“mvn包”构建项目,Maven将使用${server.url}属性的默认值(在我的配置中)。如果您使用“mvn package-P custom”构建项目,那么Maven将把${server.url}属性引用替换为其在custom profile()中的值。感谢@Nico编辑该示例以遵循问题中提供的示例。