如何使用jaxb更新pom.xml文件?

问题描述

我正在开发一个必须以编程方式更新pom.xml文件的应用程序。 我正在遵循的步骤。

  1. 从maven XSD(http://maven.apache.org/xsd/maven-4.0.0.xsd)创建JAVA POJO。
  2. 使用以下程序在POJO中加载pom.xml文件并在模型中更新值,然后更新相同的pom.xml文件
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
File xml = new File("C:\\DS Designer Forum\\pomfiles\\pom.xml");
Document document = db.parse(xml);
JAXBContext jc = JAXBContext.newInstance(Model.class);
Binder<Node> binder = jc.createBinder();
Model model = (Model) binder.unmarshal(document);

Dependencies dependencies = model.getDependencyManagement().getDependencies();
if(dependencies != null) {
    for(Dependency dependency : dependencies.getDependency()) {
        if(!StringUtils.isEmpty(dependency.getScope()) && dependency.getScope().contains("provided")) {
           String scope = dependency.getScope().replace("provided",StringUtils.EMPTY);
                dependency.setScope(scope);
        }
    }
}
 
binder.updateXML(model);
TransformerFactory tf = TransformerFactory.newInstance();
tf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING,false);
Transformer t = tf.newTransformer();
t.transform(new DOMSource(document),new StreamResult(new File("C:\\DS Designer Forum\\pomfiles\\aaaaapom.xml")));

出现以下错误

** 线程“主”中的异常javax.xml.bind.UnmarshalException:意外元素(uri:“”,local:“ project”)。预期的元素是 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:726) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:247) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:242) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:109) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext $ DefaultRootLoader.childElement(UnmarshallingContext.java:1131) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:556) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:538) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.startElement(InterningXmlVisitor.java:60) 在com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:153) 在com.sun.xml.internal.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:229) 在com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:112) 在com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:95) 在com.sun.xml.internal.bind.unmarshaller.DOMScanner.scan(DOMScanner.java:88) 在com.sun.xml.internal.bind.v2.runtime.BinderImpl.associativeUnmarshal(BinderImpl.java:146) 在com.sun.xml.internal.bind.v2.runtime.BinderImpl.unmarshal(BinderImpl.java:117) 在com.sunlife.innovation.update.LoadInfoFromPOMFile.main(LoadInfoFromPOMFile.java:52) **

请帮助我。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)