Maven settings.xml配置含特殊字符密码引发实体引用报错求助
解决Maven settings.xml密码含特殊字符的XML实体错误
错误原因
密码中的&是XML特殊字符,XML解析器会将&视为实体引用的起始标记,&c会被识别为未完成的实体引用(缺少结尾的;),因此触发"对实体'c'的引用必须以';'分隔符结尾"的错误。
解决方法
方法1:转义XML特殊字符
将密码里的&替换为XML预定义转义字符&,修改后的配置:
<server> <id>myid-releases</id> <username>myusername</username> <password>mypass&c%</password> </server>
方法2:用CDATA块包裹密码
把密码放在<![CDATA[...]]>中,CDATA内的内容会被当作纯文本解析,无需逐个转义特殊字符:
<server> <id>myid-releases</id> <username>myusername</username> <password><![CDATA[mypass&c%]]></password> </server>
方法3:加密Maven密码(推荐)
为避免明文存储密码,更安全的方式是使用Maven加密工具:
生成主密码
执行命令(替换<你的主密码>为自定义密码):mvn --encrypt-master-password <你的主密码>将生成的加密主密码存入
~/.m2/settings-security.xml(Windows路径:C:\Users\<你的用户名>\.m2\settings-security.xml):<settingsSecurity> <master>加密后的主密码</master> </settingsSecurity>加密服务器密码
- Linux/macOS终端:
mvn --encrypt-password 'mypass&c%' - Windows命令行:
mvn --encrypt-password mypass^&c%
- Linux/macOS终端:
替换settings.xml中的密码
将加密后的密码填入配置:<server> <id>myid-releases</id> <username>myusername</username> <password>{加密后的密码}</password> </server>
内容的提问来源于stack exchange,提问作者zinon
相关产品推荐
相关产品推荐

