# PF4J Gradle Demo
This demo assumes that you know the basics of Gradle (Please look at [gradle](https://gradle.org/) for more info)
### Setup/Build
1. Clone the repo
2. Go to demo_gradle `cd demo_gradle`
3. run `./gradlew build`
* This will produce one jar, named app-plugin-demo-uberjar.jar, located in the `app/build/libs/` directory and three plugins zips located in `build/plugins` directory.
* The plugins are `plugin-hello-plugin-0.0.1.zip`, `plugin-KotlinPlugin-1.0.0.zip` and `plugin-welcome-plugin-0.0.1.zip`
### Run the demo
1. Run
```
./gradlew app:run
```
2. The demo's output should look similar to: (Please see `Boot#main()` for more details)
```
[main] INFO org.pf4j.demo.Boot - ########################################
[main] INFO org.pf4j.demo.Boot - PF4J-DEMO
[main] INFO org.pf4j.demo.Boot - ########################################
[main] INFO org.pf4j.DefaultPluginStatusProvider - Enabled plugins: []
[main] INFO org.pf4j.DefaultPluginStatusProvider - Disabled plugins: []
[main] INFO org.pf4j.DefaultPluginManager - PF4J version 3.1.0 in 'deployment' mode
[main] INFO org.pf4j.util.FileUtils - Expanded plugin zip 'plugin-hello-plugin-0.0.1.zip' in 'plugin-hello-plugin-0.0.1'
[main] INFO org.pf4j.util.FileUtils - Expanded plugin zip 'plugin-KotlinPlugin-1.0.0.zip' in 'plugin-KotlinPlugin-1.0.0'
[main] INFO org.pf4j.util.FileUtils - Expanded plugin zip 'plugin-welcome-plugin-0.0.1.zip' in 'plugin-welcome-plugin-0.0.1'
[main] INFO org.pf4j.AbstractPluginManager - Plugin 'welcome-plugin@0.0.1' resolved
[main] INFO org.pf4j.AbstractPluginManager - Plugin 'KotlinPlugin@1.0.0' resolved
[main] INFO org.pf4j.AbstractPluginManager - Plugin 'hello-plugin@0.0.1' resolved
[main] INFO org.pf4j.AbstractPluginManager - Start plugin 'welcome-plugin@0.0.1'
[main] INFO org.pf4j.demo.welcome.WelcomePlugin - WelcomePlugin.start()
[main] INFO org.pf4j.demo.welcome.WelcomePlugin - WELCOMEPLUGIN
[main] INFO org.pf4j.AbstractPluginManager - Start plugin 'KotlinPlugin@1.0.0'
[main] INFO org.pf4j.demo.kotlin.KotlinPlugin - KotlinPlugin.start()
[main] INFO org.pf4j.demo.kotlin.KotlinPlugin - KOTLINPLUGIN
[main] INFO org.pf4j.AbstractPluginManager - Start plugin 'hello-plugin@0.0.1'
[main] INFO org.pf4j.demo.hello.HelloPlugin - HelloPlugin.start()
[main] INFO org.pf4j.demo.Boot - Plugindirectory:
[main] INFO org.pf4j.demo.Boot - ../build/plugins
[main] INFO org.pf4j.demo.Boot - Found 4 extensions for extension point 'org.pf4j.demo.api.Greeting'
[main] INFO org.pf4j.demo.Boot - >>> Whazzup
[main] INFO org.pf4j.demo.Boot - >>> Welcome
[main] INFO org.pf4j.demo.Boot - >>> KotlinGreetings
[main] INFO org.pf4j.demo.Boot - >>> Hello
[main] INFO org.pf4j.demo.Boot - Extensions added by plugin 'welcome-plugin':
[main] INFO org.pf4j.demo.Boot - Extensions added by plugin 'KotlinPlugin':
[main] INFO org.pf4j.demo.Boot - Extensions added by plugin 'hello-plugin':
[main] INFO org.pf4j.AbstractPluginManager - Stop plugin 'hello-plugin@0.0.1'
[main] INFO org.pf4j.demo.hello.HelloPlugin - HelloPlugin.stop()
[main] INFO org.pf4j.AbstractPluginManager - Stop plugin 'KotlinPlugin@1.0.0'
[main] INFO org.pf4j.demo.kotlin.KotlinPlugin - KotlinPlugin.stop()
[main] INFO org.pf4j.AbstractPluginManager - Stop plugin 'welcome-plugin@0.0.1'
[main] INFO org.pf4j.demo.welcome.WelcomePlugin - WelcomePlugin.stop()
```
ava-21
A seamless aspect-oriented extension to the Java programming language: https://github.com/eclipse-aspectj/aspectj
<html><head><title>AspectJ library module</title></head><body><h2>AspectJ library module</h2>
This module primarily contains binary libraries from open-source projects,
some of which are subject to licenses other than the Eclipse Public License (EPL).
Those not subject to EPL are not distributed in source or binary form with
AspectJ (except for Apache's BCEL), but are used in the development of AspectJ.
This module also contains some bootstrap libraries and test sources.
<ul><li><ahref="ant">ant</a>:
Ant 1.6.3 from
<ahref="http:jakarta.apache.org/ant">http:jakarta.apache.org/ant</a>.
This is a normal binary distribution, with junit.jar in the lib dir.
Ant is available under the Apache Software License.
</li><li><ahref="aspectj">aspectj</a>:
This is just our version to avoid bootstrapping Ant builds of
modules built with AspectJ. Likely to be replaced with bootstrapping.
</li><li><ahref="bcel">bcel</a>:
The Bytecode Engineering Library from
<ahref="http:jakarta.apache.org/bcel">http:jakarta.apache.org/bcel</a>,
available under the Apache Software License.
</li><li><ahref="build">build</a>: bootstrap libraries for the build process.
</li><li><ahref="commons">commons</a>:
Commons 1.0 from
<ahref="http:jakarta.apache.org/commons">http:jakarta.apache.org/commons</a>.
This is used only by the testing module.
</li><li><ahref="junit">junit</a>:
JUnit 3.7 test libraries, available from
<ahref="http:junit.org">junit.org</a> and under the CPL.
</li><li><ahref="regexp">regexp</a>:
Regular expressions from
<ahref="http:jakarta.apache.org">http:jakarta.apache.org</a>.
This is used only by the testing module.
</li><li><ahref="saxon">saxon</a>:
For building docbook.
</li><li><ahref="test">test</a>: bootstrap libraries for the test process.
These could be replaced with build products, to avoid the checked-in
versions being out of date, but these build products change rarely
(and almost never in binary-incompatible ways).
</li></ul></body></html>