JAXB解组-pom.xml

内存

我正在开发一个简单的实用程序,用于验证开发人员添加到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,并且标签使潜在的回答者无法回答这个问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章