我在 ~/.m2/settings.xml 中有一个 Maven 设置文件。我需要编写一些脚本来从其中一个服务器条目中提取用户名和密码。
我尝试使用“xmllint”和“xmlstarlet”,并使用我认为正确的(不同的)命令行参数。两者的结果都只是一个空字符串。没有错误,只是什么也没打印。
这是~/.m2/settings.xml 的摘录:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
...
--><!--
| This is the configuration file for Maven. It can be specified at two levels:
...
|-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>central</id>
<username>...</username>
<password>...</password>
</server>
...
这与 Maven 配合得很好。
对于 xmllint,我正在尝试以下操作:
xmllint --xpath 'string(//server[id="central"]/username/text())' ~/.m2/settings.xml
对于 xmlstarlet 来说,它是这样的:
xmlstarlet sel -T -R -D -t -v "//settings/servers/server[id='central']/username/text()" ~/.m2/settings.xml
这些在语义上略有不同,但我尝试了几种变体。所有这些只是打印一个空字符串。