Java 11中带有外部库中的module-info的XML处理dom4j问题

问题描述

使用Java模块系统将项目从Java 8迁移到Java 11时 由于使用了dom4j库(版本2.1.3),我们注意到了两个警告。

问题

  1. 自动模块dom4j的名称不稳定,它是从模块的文件名派生的。” (Eclipse 2020-09)
  2. “检测到必需的基于文件名的自动模块:[dom4j-2.1.3.jar]。请不要将此项目发布到公共工件存储库!” (Maven 3.6.0)

情况

到目前为止,我可以看到dom4j的开发人员意识到了这个问题: https://github.com/dom4j/dom4j/issues/67

由于该问题已有1年以上的历史了,它仍然是开放的,并且对master分支的最后一次提交是7个月的历史,因此我们不打算从dom4j(不幸的是,我真的很喜欢dom4j)转移到一个新的库中。我们确实希望使用Java的新模块系统,并且不想忽略这些警告。

问题

您能推荐一个“现代” Java-9模块系统感知的库来进行xml处理吗?我们主要使用简单的内容,例如阅读/解析,书写和漂亮的打印。一个Apache-2.0许可证会很好,但这不是必需的。

我的瑞萨现正透露 https://github.com/FasterXML/aalto-xml 这是Apache-2.0许可证,并且似乎包含Java 9模块定义。您能推荐Aalto或任何其他库与Java模块系统一起使用吗?

可重复性

可以使用简单的pom.xml轻松地重现该问题,其中包括对...的依赖

<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.3.1</version>

与mavens build插件一起

<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
 <release>11</release>
 <encoding>utf-8</encoding>...

一个module-info.java

module dom4jproblem {
  exports mypackage;
  
  requires dom4j;
}

解决方法

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

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

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