Closed murdos closed 3 months ago
This dependency is from 2014, and appears to be referencing a JAR that should probably be a dependency on anything newer than Java 8 or 9, as mentioned in https://github.com/ehcache/ehcache3/issues/2881 which is linked.
Are you able to update the dependency to a newer version of JAXB by overriding it (e.g. excludes on ehcache)? The newest version appears to be this:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>4.0.5</version>
</dependency>
If this isn't possible, could you post the output of mvn -B -e clean generate-sources
for the project? That should provide a stacktrace for where this error is occurring in the plugin.
We rely heavily on the Eclipse Aether APIs that Maven exposes to perform dependency resolution on project dependencies, and it appears to be that which is failing. You can turn off the loading of protobuf sources from dependencies using a configuration flag, which I believe would prevent this issue by avoiding the attempted resolution of this dependency:
<configuration>
<ignoreProjectDependencies>true</ignoreProjectDependencies>
</configuration>
Or you can instruct the plugin to only consider dependencies directly specified for the project in the import path:
<configuration>
<dependencyResolutionDepth>DIRECT</dependencyResolutionDepth>
</configuration>
The issue is that this plugin will default to attempting to index all dependencies of your project to attempt to find *.proto
sources. This is done so they can be added to import paths like how you'd see Java make them available by being dependencies. You can use the two features above and importDependencies
to control this behaviour.
Let me know if that is any help. If not, I can try to take a closer look on my side to find a way to resolve this for you on the plugin side. I am not sure whether it will be possible to detect and suppress but there are a few possible things I can look into on my side. I can take a look this afternoon.
It appears the dependency in question causing this issue is referenced transitive via runtime scope in ehcache (https://repo1.maven.org/maven2/org/ehcache/ehcache/3.10.8/ehcache-3.10.8.pom), I wouldn't expect the plugin to be attempting to resolve this.
Looking at how I set this up, this may be a logic error. It appears I am not specifying the resolution scope on the CollectRequest
where I perform resolution.
If this is the case then I would not expect it to fix the nature of the issue you describe, but it may fix this specific case.
I'll see what I can come up with and get back to you at some point this afternoon.
I've pushed a potential fix to GH-307. @murdos please can you build that locally (./mvnw clean install -Dmaven.test.skip -Dinvoker.skip
) and try building your project against this locally?
If it fixes the issue, I'll get this released ASAP to unblock you.
The issue seems to be that Maven by default ignores partial dependency resolution failures, whereas we do not. I've relaxed the logic around this so that we drop dependencies that cannot be resolved after reporting the issues in error logs. Hopefully this should let you work around the issue.
It is worth noting that without excluding the JAXB dependency, I am getting errors from Maven before getting errors from this plugin itself. I was only able to get this to work with the following:
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
<classifier>jakarta</classifier>
<exclusions>
<exclusion>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</exclusion>
</exclusions>
</dependency>
Thanks for the quick investigations @ascopes. I tried 2.4.0-SNAPSHOT version built from main branch (at 8a96b7245ad27ced8db2e685a26ef2c1e31e3fc5), and it still failed. It should be noted that if I remove the protobuf-maven-plugin, maven has no problem for doing its own dependencies resolution, and the build is successful.
Sorry, I didn't understand that I should test from bugfix/GH-299-partial-dependency-resolution-errors
branch.
From here build doesn't fail anymore!
Cool, that is great to hear. I'll get that released now then.
Thanks for the logs as well, can see Maven emitting the errors in those logs but continuing once it hits them, so hopefully we should be closer to that behaviour now.
Should be on Maven Central in the next 30 minutes or so.
Edit: scratch that last part, looks like Nexus is down again... I'll keep trying and see if I can get it to deploy but I'm just getting timeouts both via automation and via manual steps right now.
v2.4.0 released @ https://github.com/ascopes/protobuf-maven-plugin/releases/tag/v2.4.0
While attempting to replace xolstice plugin by this one in the jhipster-lite code generator I encountered an issue while the plugin is resolving project dependencies:
I've uploaded a simple project that demonstrates the issue: https://github.com/murdos/protobuf-maven-plugin-deps-resolution-issue
It seems to be related to the resolution of dependencies of ehcache, and could be related to issues mentioned on StackOverflow