@Sjaak Derksen let's discuss here - doing this the SLOPI way (I'll leave it to @Philip Durbin 🚀 to explain SLOPI) is much better for future reference.
@Sjaak Derksen pointed me to https://github.com/gdcc/exporter-dcat3/actions/runs/21062443230/job/60571742458#step:7:854, where the releasing fails because he is trying to use a JDK 11 but targeting Java 17 (as instructed to the compiler).
Looking at the DCAT3 POM, that's an easy fix. Just drop the <release>17</release> line and add a property jdk.version=17, so the compiler plugin get's correct config and the CI job knows the right JDK version as well.
But there's more here!
And this makes me wonder if we shouldn't put some useful things in the exporters-parent so much of this stuff is prompty autoconfigured for plugin developers.
Also: lot's of interesting stuff @Sjaak Derksen added here! Much I didn't know!
I also suggest we add a Maven profile activating on JDK23+ that adds the <proc>full</proc> bit. It's not available before that release and will topple any build using JDK 17-22:
<profiles>
<profile>
<id>jdk23+</id>
<activation>
<jdk>[23,)</jdk>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<proc>full</proc>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Again something that could just sit in the exporter parent!
Oliver Bertuch said:
let's discuss here - doing this the SLOPI way
Here's my canonical writeup of SLOPI: https://blog.greptilian.com/2020/01/25/slopi-communication/ (Searchable Linkable Open Public Indexed (SLOPI) Communication or Why open source projects should avoid Slack)
@Oliver Bertuch I'm having a little trouble following what change you want to make, but I trust you. :smile:
I think -proc is required from java 23 and onwards but it was available as optional earlier. Now: i need the annotation processor - so -proc:full - for the @AutoService annotation. That generates the SPI entry in src/main/resources
For JDK 17 I got this error message when "just having it", so I suspect CI will fail with this, too: Fatal error compiling: error: invalid flag: -proc:full.
Looking at the allowed values via javac --help (for 17.0.9-tem): only,none. In JDK23 they changed the former default "full" to "none", which is why the allowed values then became only,none,full. (I do understand why you want full proc :wink: )
$ sdk use java 17.0.9-tem && javac --help | grep '\-proc:'
Using java version 17.0.9-tem in this shell.
-proc:{none,only}
$ sdk use java 21.0.7-tem && javac --help | grep '\-proc:'
Using java version 21.0.7-tem in this shell.
-proc:{none,only,full}
$ sdk use java 23.0.2-tem && javac --help | grep '\-proc:'
Using java version 23.0.2-tem in this shell.
-proc:{none,only,full}
$sdk use java 25.0.1-tem && javac --help | grep '\-proc:'
Using java version 25.0.1-tem in this shell.
-proc:{none,only,full}
Using the Maven profile, activated when a newer javac (23+) is in action will just make it work for all. At least that's what I hope to see :smile:
I added some more testing above. Maybe we should even activate the profile for Java 21+, so we have it going forward from this previous TLS, which may be around on quite some dev machines. (Also: I suspect this will be helpful for Dataverse core when moving to Jakarta EE 11)
Use -proc:only when you:
Use -proc:full when you:
it is strange.. I added the processor path block to control which annotation processor to trigger. I checked. It looks like I can remove the complete setting. I do have some background in annotation processing :slight_smile: .. but never experienced issues with this flag.
anyway... lets see if this works.
don't believe the flag -proc:full is to blame.. removed it and still the same issue.
move on the change the jdk setting
Okay. succesful this time:
[INFO] Waiting until Deployment 2b2d06e1-ab7b-4c8b-9bbb-948556f99df3 is validated
[](https://github.com/gdcc/exporter-dcat3/actions/runs/21070944017/job/60600209816#step:7:3647)[INFO] Deployment 2b2d06e1-ab7b-4c8b-9bbb-948556f99df3 has been validated. To finish publishing visit https://central.sonatype.com/publishing/deployments
I guess that I can't finish it (it does not accept my github credentials)
@Sjaak Derksen you're getting me wrong. I am not arguing about removing the flag at all! I'm just saying it will break compiling with a JDK 17 javac, while it's a must on JDK23+ javac. The way to work around this problem is highlighted above. Just trying to make everybody, independent of their installed JDK (well not <17), able to compile!
no worries.. the flag does not seem to add anything if you also explicitly specify the maven coordinates of the used annotation processor. So it is not your comment as such, I think that we should not over-specify configuration and neither code. Fit for purpose is the keyword here :smiley:
the property though did fix the issue.
Last updated: Apr 03 2026 at 06:08 UTC