Skip to content

twatzl/pf4j-kotlin-demo

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
api
 
 
app
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PF4J Gradle Demo

This demo assumes that you know the basics of Gradle (Please look at gradle for more info)

Setup/Build

  1. Clone the repo
  2. run ./gradlew build
  • This will produce:
    • one jar, named app-plugin-demo-uberjar.jar, located in the app/build/libs/ directory
    • three plugins zips located in build/plugins directory.
  • The plugins are:
    • plugin-hello-plugin-0.0.1.zip
    • plugin-welcome-plugin-0.0.1.zip

Run the demo

  1. Run
 ./gradlew app:run
  1. The demo's output should look similar to: (Please see Boot#main() for more details)
2021-01-23 21:20:06,426 INFO org.pf4j.kotlindemo.Boot - ########################################
2021-01-23 21:20:06,427 INFO org.pf4j.kotlindemo.Boot -                PF4J-DEMO                
2021-01-23 21:20:06,427 INFO org.pf4j.kotlindemo.Boot - ########################################
2021-01-23 21:20:06,427 INFO org.pf4j.kotlindemo.Boot - Plugin directory: <Path to the plugin directory>
2021-01-23 21:20:06,455 INFO org.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
2021-01-23 21:20:06,455 INFO org.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
2021-01-23 21:20:06,460 INFO org.pf4j.DefaultPluginManager - PF4J version 3.6.0 in 'deployment' mode
2021-01-23 21:20:06,486 INFO org.pf4j.AbstractPluginManager - Plugin 'welcome-plugin@0.0.1' resolved
2021-01-23 21:20:06,487 INFO org.pf4j.AbstractPluginManager - Plugin 'hello-plugin@0.0.1' resolved
2021-01-23 21:20:06,487 INFO org.pf4j.AbstractPluginManager - Start plugin 'welcome-plugin@0.0.1'
2021-01-23 21:20:06,492 INFO org.pf4j.demo.welcome.WelcomePlugin - WelcomePlugin.start()
2021-01-23 21:20:06,495 INFO org.pf4j.demo.welcome.WelcomePlugin - WELCOMEPLUGIN
2021-01-23 21:20:06,495 INFO org.pf4j.AbstractPluginManager - Start plugin 'hello-plugin@0.0.1'
2021-01-23 21:20:06,497 INFO org.pf4j.demo.hello.HelloPlugin - HelloPlugin.start()
2021-01-23 21:20:06,500 INFO org.pf4j.demo.hello.HelloPlugin - HELLOPLUGIN
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - Found 2 extensions for extension point 'org.pf4j.kotlindemo.api.Greeting'
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - >>> Welcome
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Welcome Alice
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Welcome Bob
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Welcome Trudy
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - >>> Hello
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Hello Alice
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Hello Bob
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - 	>>> Hello Trudy
2021-01-23 21:20:06,515 INFO org.pf4j.kotlindemo.Boot - Extensions added by plugin 'welcome-plugin':
2021-01-23 21:20:06,516 INFO org.pf4j.kotlindemo.Boot - Extensions added by plugin 'hello-plugin':
2021-01-23 21:20:06,516 INFO org.pf4j.AbstractPluginManager - Stop plugin 'hello-plugin@0.0.1'
2021-01-23 21:20:06,516 INFO org.pf4j.demo.hello.HelloPlugin - HelloPlugin.stop()
2021-01-23 21:20:06,516 INFO org.pf4j.AbstractPluginManager - Stop plugin 'welcome-plugin@0.0.1'
2021-01-23 21:20:06,516 INFO org.pf4j.demo.welcome.WelcomePlugin - WelcomePlugin.stop()

Running the JAR

Note that for manually running the uber jar in app/build/libs/app-plugin-demo-uber.jar the property pf4j.pluginsDir for example using the parameter -Dpf4j.pluginsDir=<path to plugins dir> when running Java.

Issues/Contribution

If you find any issues with the code you are welcome to open a ticket.

I am not actively updating the code, but merely sharing the experience I gained from setting up a kotlin project with pf4j and thus won't update this project on a regular basis.

Pull requests are very welcome. :)

About

A demo project for using pf4j with Kotlin.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages