gpt4 book ai didi

java - JAXB 解码 - pom.xml

转载 作者:行者123 更新时间:2023-11-30 03:04:44 24 4
gpt4 key购买 nike

我正在开发一个简单的实用程序,用于验证开发人员添加到 pom.xml 的内容。例如,可能存在这样的限制:所有依赖项版本必须由父 pom 管理,并且如果开发人员将版本标记添加到子项目之一的依赖项中,则实用程序应该捕获这一点。为此,我尝试将 pom.xml 的内容加载到 Maven 模型类“org.apache.maven.model.Model”中。但是,我遇到了这个异常:

unexpected element (uri:"http://maven.apache.org/POM/4.0.0", local:"project"). Expected elements are (none)

添加自定义验证处理程序以忽略“意外元素”异常(事实上,始终返回 true)不起作用。这是我的代码:

public static void main(String[] args) {
try {
unmarshalXMLToObject(new File("pom.xml"));
} catch (Exception e) {
e.printStackTrace();
}
}


public static Model unmarshalXMLToObject(File xmlFileToUnmarshal) throws JAXBException, SAXException, IOException,
ParserConfigurationException {

JAXBContext jaxbContext = JAXBContext.newInstance(Model.class);

Unmarshaller m = jaxbContext.createUnmarshaller();

m.setEventHandler(new ValidationEventHandler() {

@Override
public boolean handleEvent(ValidationEvent arg0) {
// return true always
return true;
}
});

@SuppressWarnings("unchecked")
Model objectToReturn = (Model) m.unmarshal(xmlFileToUnmarshal);

return objectToReturn;
}

我还尝试将 maven-4.0.0.xsd 添加到解码器中,但这也没有帮助。

最佳答案

事实证明我根本不需要使用 JAXB 解码。

下面的代码达到了目的,至少达到了我想要的效果。

org.apache.maven.model.io.xpp3.MavenXpp3Reader mavenreader = new MavenXpp3Reader();

org.apache.maven.model.Model model = mavenreader.read(new FileReader(pomXml));

这样我就有了完整的 maven pom.xml 作为 java 类。

我猜标题和标签中存在 JAXB,使潜在的回答者无法回答这个问题。

关于java - JAXB 解码 - pom.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com