eirslett / frontend-maven-plugin

"Maven-node-grunt-gulp-npm-node-plugin to end all maven-node-grunt-gulp-npm-plugins." A Maven plugin that downloads/installs Node and NPM locally, runs NPM install, Grunt, Gulp and/or Karma.
Apache License 2.0
4.24k stars 870 forks source link

Maven-frontend-plugin 1.13.1 doesn't work with Java 8 #1094

Closed perlan closed 1 year ago

perlan commented 1 year ago

Do you want to request a feature or report a bug? I hope it's a bug What is the current behavior? Previous versions has supported maven builds using java 8 and according to the README.md it's still the case. However, according too this commit , java 17 is now required.

If the current behavior is a bug, please provide the steps to reproduce. Build any pom with java 8 and maven containing frontend-maven-plugin 1.13.1. The result is the following build error: Execution install-node of goal com.github.eirslett:frontend-maven-plugin:1.13.1:install-node-and-npm failed: Unable to load the mojo 'install-node-and-npm' in the plugin 'com.github.eirslett:frontend-maven-plugin:1.13.1' due to an API incompatibility: org.codehaus.plexus.component.repository.exception.ComponentLookupException: com/github/eirslett/maven/plugins/frontend/mojo/InstallNodeAndNpmMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0.

What is the expected behavior? I would prefer if the plugin would support Java 8 as before or at least publish a plugin version that fixes maven 3.9.2 warnings that supports java 8. If that's not feasible, at least update the README to list the correct requirements. I don't know the reason for requiring java 17 IMHO really should be considered a major upgrade and thus a major semver update.

Please mention your frontend-maven-plugin and operating system version. Using frontend-maven-plugin 1.13.1 on macOS with java 8 and maven 3.9.2

eirslett commented 1 year ago

Upgrading to the newest LTS versions of dependencies was the easiest approach. There was an issue but I don't remember exactly why. Feel free to submit a PR if you manage to revert to Java 8 and still have it work without warnings in Maven 3.9.2! Otherwise, it's of course still possible to use the 1.12.1 version of this plugin.

perlan commented 1 year ago

Ok, I forked the repo and tried to compile it using mvn clean test. How do you define "without warnings in 3.9.2"? The master branch currently produces compiler warnings due to deprecated @Component usage and a maven Plugin validation issues even with java 17. When trying with java8, I basically get the same warnings but all tests and integration tests pass as far as I can tell. Obviously, I haven't tested the gh actions pipeline...

eirslett commented 1 year ago

Well, looks like you're right... After your message, I just tried myself, and it works here as well. The issue I had previously must have disappeared 🤷 I guess I'll never know what happened. Anyways, I will try to get a java 8-compatible release out.

perlan commented 1 year ago

Awesome. Would you like some help in trying to fix those @Component warnings in return for your kind assistance?

eirslett commented 1 year ago

Try again with the freshly published 1.13.3? That one should be working with Java 8 again. @perlan @basil @xak2000 are you able to verify that the 1.13.3 version works without warnings?

perlan commented 1 year ago

Yes. I can confirm that 1.13.3 now works with java 8 and maven 3.9.2 and produces no maven validation warning. Thanks again!