RMLio / rmlmapper-java

The RMLMapper executes RML rules to generate high quality Linked Data from multiple originally (semi-)structured data sources
http://rml.io
MIT License
144 stars 61 forks source link

Exclusion of xml-apis from build #237

Open enriquedelpino opened 2 months ago

enriquedelpino commented 2 months ago

Hi all,

We in Graph.Build are users of the RMLMapper project you guys created. We were users of version 5.0 of the project, and are now trying to upgrade to your latest (6.5.1), which works on Java 17. The overall upgrade has been seamless, but we've found a problem on the build related to XML apis.

Since Java 11, xml-apis have been included in the core of JDK, and the usage of old dependencies like the following is disencouraged.

<!-- https://mvnrepository.com/artifact/xml-apis/xml-apis --> <dependency> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>2.0.2</version> </dependency>

In fact, our consumers make use of some of the classes defined in the xml packages of the core language (which are also defined on the old xml-apis) and this breaks our build. Java complains the packages are defined by two different modules, which is not allowed in simple terms.

You are not directly using this dependency on your project, but rather have transitive dependencies to it through xlsx-streamer and simple-odf. As far as I know, you are on the latest version of simple-odf and this project has not been actively mantained for ages.

Normally, a problem like this would be easily solved on the projects we maintain and consume your RMLMapper (and hence dataio) by dependency managing and excluding the xml-apis, but in the case of your projects you use maven-shade-plugin which makes impossible to dependency manage imports which are fat jars.

I would like to request that at least the xml-apis dependencies are excluded as I suggest on my following snippet, even though I think it would be much more useful for consumers of your projects not to use maven shade plugin in order to allow us to dependency manage problems like this. I could understand your top-level project RMLMapper does shade the jar file, but I don't see why the anciliary projects created in the latest versions since v5 need to be shaded, such us dataio.

<dependency> <groupId>com.monitorjbl</groupId> <artifactId>xlsx-streamer</artifactId> <version>2.2.0</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency> <!--==============================================--> <!-- Open document format processing dependencies --> <!--==============================================--> <dependency> <groupId>org.odftoolkit</groupId> <artifactId>simple-odf</artifactId> <version>0.9.0</version> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency>

I hope this is not a huge problem that cannot be dealt with easily, and I would like to emphasize that us from Graph.Build are more than happy to help maintaining this project in the best of shapes for the community. We really love the great work you've put into this.

Regards, Enrique

DylanVanAssche commented 1 month ago

Can you please check RMLMapper 7.0.0? I don't see these dependencies anymore in the last release pom.xml file.