jeremiehuchet / virtuoso-drivers

Project used to deploy Virtuoso database drivers to a public maven repository

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Virtuoso maven repository

Maven repository distributing Openlink Virtuoso opensource Java libraries.

Module Latest version
virtuoso-jdbc 43.3.119

Getting started

You can browse available packages and versions through the Github web UI section or the raw repository view

maven

Add the repository to your pom.xml:

<repository>
    <id>virtuoso</id>
    <name>Openlink Virtuoso drivers packages</name>
    <url>https://maven.pkg.github.com/jeremiehuchet/virtuoso-drivers</url>
</repository>

And the dependency:

<dependency>
    <groupId>unofficial.com.openlink</groupId>
    <artifactId>virtuoso-jdbc</artifactId>
    <version>43.3.119</version>
</dependency>

gradle

Add the repository to your build.gradle:

repositories {
    maven {
        url = uri("https://maven.pkg.github.com/jeremiehuchet/virtuoso-drivers")
    }
}

And the dependency:

dependencies {
    implementation "unofficial.com.openlink:virtuoso-jdbc:43.3.119"
}

JDBC version naming

I used a convention inspired by the Postgresql JDBC driver : API.MAJOR.MINOR[.JRE].

  • API is the version of the API implemented without dots : JDBC 4.1 → 41, JDBC 4.2 → 42
  • MAJOR is the driver implementation major version number
  • MINOR is the driver implementation minor version number
  • JRE is optional and specified for old Java runtimes

For instance, 41.3.119.jre7 is:

  • a JDBC 4.1 driver
  • version 3.119
  • compatible with JRE 7+

And 43.3.119 is the same but for latest JRE (9+).

About

I opened an issue some time ago to get virtuoso JDBC driver published to maven central (virtuoso-opensource#249).

So... no, it's not yet into maven central 😢
But it's easier to use in maven projects 🎉

Hacking

Generating JDBC driver sources files

Currently, the original driver source contains C preprocessor instructions (see for instance virtuoso.jdbc.Driver). It makes the build toolchain somewhat complex for java focused developers used to maven conventions.

I used (mostly for fun) nix package manager to set up the required tools with the right version. After installing nix, you should be able to run nix-build virtuoso-java-sources.nix to generate an output with the Virtuoso JDBC drivers rouces files.

Finally, I rearranged files to suit maven standard project layout, but I didn't modify them. This way I was able to publish libraries easily to a maven repository.

Building

Take a look a main.yml github action. You should just have to run nix-shell --run "mvn package" to build the libraries.

About

Project used to deploy Virtuoso database drivers to a public maven repository

License:GNU General Public License v2.0


Languages

Language:Java 99.8%Language:Nix 0.1%Language:Shell 0.1%