Bundled lwjgl methods don't have javadoc comments
Whenever I try to use some of the functions from lwjgl that are exposed with an api dependency from the imgui-java-app I can't get any IDE help in method descriptions or params from the lwjgl package. This hinders development significantly. I tried adding lwjgl dependencies to the project myself to force the IDE to switch, but IDE still points to your shaded lwjgl and I don't know how to make it resolve the other way.
I'm no gradle ninja so I don't know how to make the project "rewire" to another lwjgl. If I understand correctly what shading and everything is, then the imgui-java-app shades the lwjgl inside but skips the javadoc comments, right?
I like what you did with the Application and Window classes, so I wanted to use them, but I can't resolve the conflict with my current knowledge.
Maybe it would be better to create 2 versions of imgui-java-app - one with shaded lwjgl and another one with runtimeOnly or implementation dependency?
As a sidenote - It would be good to give some basic descriptions in the README.md about what do packages do - I had to analyze subproject build.gradle files to understand them.
Ok so I found a way to sidestep this problem but I am too much of a newbie in gradle to know if what I'm doing is right and won't introduce some unwanted side effects.
I added lwjgl dependencies myself but I also added the exclude rule to imgui-java-app for org.lwjgl.
dependencies {
implementation(project(":magma"))
implementation(kotlin("stdlib"))
implementation("io.github.microutils", "kotlin-logging-jvm","2.0.10")
implementation("ch.qos.logback", "logback-classic", "1.2.5")
testImplementation("org.junit.jupiter:junit-jupiter:5.7.0")
// lwjgl - as external dependency because bundled in imgui has no javadoc nor intellisense
val lwjglNatives = when (OperatingSystem.current()) {
OperatingSystem.LINUX -> "natives-linux"
OperatingSystem.WINDOWS -> "natives-windows"
else -> throw Error("Unrecognized or unsupported Operating system. Please set \"lwjglNatives\" manually")
}
val lwjglVersion = "3.2.3"
implementation(platform("org.lwjgl:lwjgl-bom:$lwjglVersion"))
implementation("org.lwjgl", "lwjgl")
implementation("org.lwjgl", "lwjgl-glfw")
implementation("org.lwjgl", "lwjgl-opengl")
// It works without the 3 below, but I don't know why, so I left it here. Can I safely delete this?
runtimeOnly("org.lwjgl", "lwjgl", classifier = lwjglNatives)
runtimeOnly("org.lwjgl", "lwjgl-glfw", classifier = lwjglNatives)
runtimeOnly("org.lwjgl", "lwjgl-opengl", classifier = lwjglNatives)
// imgui
val imguiVersion = "1.83.3"
implementation("io.github.spair", "imgui-java-app", version = imguiVersion) {
exclude("org.lwjgl") // <- this in combination with manual lwjgl deps. gives javadocs and IntelliSense
}
}