Gradle 使用 Apache Jena 3.11.0

Gradle with Apache Jena 3.11.0

我正在尝试创建一个包含最新 Apache Jena 3.11 的 shadowjar,使用 gradle 构建系统和额外的 java 代码来创建一个 "uber" 包。为此,我在这里找到了信息:https://jena.apache.org/documentation/notes/jena-repack.html 但是我很难将其转换为 gradle 设置。

有人知道如何实现吗?

5 actionable tasks: 1 executed, 4 up-to-date
Creating memory store
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.ExceptionInInitializerError
    at nl.wur.ssb.RDFSimpleCon.RDFSimpleCon.createEmptyStore(RDFSimpleCon.java:150)
    at nl.wur.ssb.RDFSimpleCon.RDFSimpleCon.<init>(RDFSimpleCon.java:62)
    at nl.wur.ssb.RDFSimpleCon.RDFSimpleCon.<init>(RDFSimpleCon.java:159)
    at nl.wur.ssb.RDFSimpleCon.Test.main(Test.java:7)
Caused by: java.lang.NullPointerException
    at org.apache.jena.tdb.sys.EnvTDB.processGlobalSystemProperties(EnvTDB.java:33)
    at org.apache.jena.tdb.TDB.init(TDB.java:252)
    at org.apache.jena.tdb.sys.InitTDB.start(InitTDB.java:29)
    at org.apache.jena.sys.JenaSystem.lambda$init(JenaSystem.java:116)
    at java.util.ArrayList.forEach(ArrayList.java:1257)
    at org.apache.jena.sys.JenaSystem.forEach(JenaSystem.java:191)
    at org.apache.jena.sys.JenaSystem.forEach(JenaSystem.java:168)
    at org.apache.jena.sys.JenaSystem.init(JenaSystem.java:114)
    at org.apache.jena.tdb.TDBFactory.<clinit>(TDBFactory.java:40)
    ... 4 more

Java创建重新打包的jar文件时需要合并ServiceLoader文件。

对于 Gradle,这是在使用 shadowJar 时用 "mergeServiceFiles()" 完成的。

https://jena.apache.org/documentation/notes/jena-repack.html 有 Maven 阴影插件的说明。