kc build command fail from source in development mode
See original GitHub issueDescribe the bug
I am going to add custom providers in Keycloak 19.0.1.
I put the jar file into /quarkus/dist/src/main/content/providers folder
By following the README, I need to build from kc.sh
When I exec the mvn command from IDE, the build fail
# in keycloak/quarkus folder
$ mvn -f server/pom.xml compile quarkus:dev -Dquarkus.args="--verbose build"
The error log is
Updating the configuration and installing your custom providers, if any. Please wait.
ERROR: Failed to run 'build' command.
Error details:
java.nio.file.NoSuchFileException: /Users/clixin/.m2/repository/io/quarkus/lib/deployment/deployment-class-path.dat
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:92)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:116)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:219)
at java.base/java.nio.file.Files.newByteChannel(Files.java:375)
at java.base/java.nio.file.Files.newByteChannel(Files.java:426)
at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420)
at java.base/java.nio.file.Files.newInputStream(Files.java:160)
at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doReaugment(QuarkusEntryPoint.java:71)
at io.quarkus.bootstrap.runner.QuarkusEntryPoint.doRun(QuarkusEntryPoint.java:47)
at io.quarkus.bootstrap.runner.QuarkusEntryPoint.main(QuarkusEntryPoint.java:31)
at org.keycloak.quarkus.runtime.cli.command.Build.run(Build.java:71)
at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
at picocli.CommandLine.execute(CommandLine.java:2078)
at org.keycloak.quarkus.runtime.cli.Picocli.parseAndRun(Picocli.java:91)
at org.keycloak.quarkus.runtime.KeycloakMain.main(KeycloakMain.java:89)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at io.quarkus.runner.bootstrap.StartupActionImpl$1.run(StartupActionImpl.java:103)
at java.base/java.lang.Thread.run(Thread.java:832)
Version
19.0.1
Expected behavior
Build success
Actual behavior
Build failed with stack trace.
How to Reproduce?
- cd
quarkus $ mvn -f ../pom.xml clean install -DskipTestsuite -DskipExamples -DskipTests$ mvn clean install -DskipTests$ mvn -f server/pom.xml compile quarkus:dev -Dquarkus.args="--verbose build"
Anything else?
I have some investigation and found that
- The not found file
deployment-class-path.datis in thequarkus/server/targetfolder after I build in IDE successfully. - And the way
QuarkusEntryPointto locate the file is from this source code. It resolves to my local maven repository which is/Users/clixin/.m2/repository/io/quarkus/
QuarkusEntryPoint.class.getProtectionDomain().getCodeSource().getLocation().getPath();
My current workaround is shadowing the QuarkusEntryPoint class and then specify the correct path.
Issue Analytics
- State:
- Created a year ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
bin/kc.sh start-dev fails with banner issue #10954 - GitHub
I downloaded keycloak 17.0.1 tar.gz and ran kc.sh start-dev. It failed with the following error: ERROR: Failed to run 'build' command.
Read more >Configuring Keycloak
Configuration sources have a descending ordinal: command-line parameters take ... The production mode is started by invoking the following command: bin/kc.
Read more >Getting Error While Fetching Keycloak Image Via Docker
I am trying to start keycloak image using docker .yml file on local with PostgreSQL database but getting error. .yml file:- version: '3'....
Read more >Configuration command optional in Keycloak.X - Google Groups
Hi,. When configuring the server, users must run the `config` command when changing any build/static property [1] such as those related to the ......
Read more >Troubleshooting : WebSphere start/stop common issues - IBM
Try running the “java –fullversion” command from the WAS_HOME/java/jre/bin directory. If this command fails, then Java likely has a problem.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
@lexcao You don’t actually need to run a
buildwhen in dev mode because the augmentation steps (the build steps run by quarkus) are always run.That said, you should be able to just call
startorstart-dev.The steps you see in that README file are when running the distribution.
if you really want to try out Quarkus dev mode to implement your provider, you can just implement your providers within the
servermodule. See https://github.com/keycloak/keycloak/tree/main/quarkus/server. Any file you put there is automatically reloaded andquarkus:devshould work fine.Another approach is to create your own project similar to our
servermodule. And use it just like a “regular” Quarkus application. In this case, you don’t even need to clone our repository.Note that I really appreciate what you are trying to achieve and we want to improve the developer experience to make it easier and fun to develop extensions to Keycloak. Perhaps while it does not happen, we can at least provide some blog or documentation about it.
You might also considering looking at this work from @thomasdarimont. You might not want to build your own distribution but it is related to the second approach above.
This method works fine for me, by adding my custom provider dependency to the
serverpom.xml. And it loads the provider as expected and gives me fast feedback.Thank you again! @pedroigor