]> source.dussan.org Git - pf4j.git/commitdiff
Improve DevelopmentPluginClasspath according #195 (#219)
authorDecebal Suiu <decebal.suiu@gmail.com>
Fri, 25 May 2018 18:58:03 +0000 (21:58 +0300)
committerGitHub <noreply@github.com>
Fri, 25 May 2018 18:58:03 +0000 (21:58 +0300)
pf4j/src/main/java/org/pf4j/DevelopmentPluginClasspath.java
pf4j/src/main/java/org/pf4j/PluginClasspath.java

index ba86bf5617c65fced7992d9b53ed13c864001863..15da659460b7f825428388d160fabd5a1b72f0fe 100644 (file)
 package org.pf4j;
 
 /**
- * Overwrite classes directories to {@code target/classes} and lib directories to {@code target/lib}.
+ * It's a compound {@link PluginClasspath} ({@link #MAVEN} + {@link #GRADLE} + {@link #KOTLIN})
+ * used in development mode ({@link RuntimeMode#DEVELOPMENT}).
  *
  * @author Decebal Suiu
  */
 public class DevelopmentPluginClasspath extends PluginClasspath {
 
-       public DevelopmentPluginClasspath() {
-               super();
+    /**
+     * The development plugin classpath for <a href="https://maven.apache.org">Maven</a>.
+     * The classes directory is {@code target/classes} and the lib directory is {@code target/lib}.
+     */
+    public static final PluginClasspath MAVEN = new PluginClasspath().addClassesDirectories("target/classes").addLibDirectories("target/lib");
 
-        addClassesDirectories("target/classes");
-        addLibDirectories("target/lib");
+    /**
+     * The development plugin classpath for <a href="https://gradle.org">Gradle</a>.
+     * The classes directories are {@code build/classes/java/main, build/resources/main}.
+     */
+    public static final PluginClasspath GRADLE = new PluginClasspath().addClassesDirectories("build/classes/java/main", "build/resources/main");
+
+    /**
+     * The development plugin classpath for <a href="https://kotlinlang.org">Kotlin</a>.
+     * The classes directories are {@code build/classes/kotlin/main", build/resources/main, build/tmp/kapt3/classes/main}.
+     */
+    public static final PluginClasspath KOTLIN = new PluginClasspath().addClassesDirectories("build/classes/kotlin/main", "build/resources/main", "build/tmp/kapt3/classes/main");
+
+    public DevelopmentPluginClasspath() {
+        addClassesDirectories(MAVEN.getClassesDirectories());
+        addClassesDirectories(GRADLE.getClassesDirectories());
+        addClassesDirectories(KOTLIN.getClassesDirectories());
+
+        addLibDirectories(MAVEN.getLibDirectories());
+        addLibDirectories(GRADLE.getLibDirectories());
+        addLibDirectories(KOTLIN.getLibDirectories());
     }
 
 }
index 2a6f2cc1478dbb10ec69d54674ad3be2815a5a20..57ff9bf876ddffee981bbc73b3d27f4593768036 100644 (file)
  */
 package org.pf4j;
 
-import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.List;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * The classpath of the plugin.
@@ -27,28 +28,35 @@ import java.util.List;
  */
 public class PluginClasspath {
 
-       private List<String> classesDirectories;
-       private List<String> libDirectories;
+    private Set<String> classesDirectories = new HashSet<>();
+    private Set<String> libDirectories = new HashSet<>();
 
-       public PluginClasspath() {
-               classesDirectories = new ArrayList<>();
-               libDirectories = new ArrayList<>();
-       }
+    public Set<String> getClassesDirectories() {
+        return classesDirectories;
+    }
 
-       public List<String> getClassesDirectories() {
-               return classesDirectories;
-       }
+    public PluginClasspath addClassesDirectories(String... classesDirectories) {
+        return addClassesDirectories(Arrays.asList(classesDirectories));
+    }
 
-       public void addClassesDirectories(String... classesDirectories) {
-               this.classesDirectories.addAll(Arrays.asList(classesDirectories));
-       }
+    public PluginClasspath addClassesDirectories(Collection<String> classesDirectories) {
+        this.classesDirectories.addAll(classesDirectories);
 
-       public List<String> getLibDirectories() {
-               return libDirectories;
-       }
+        return this;
+    }
 
-       public void addLibDirectories(String... libDirectories) {
-               this.libDirectories.addAll(Arrays.asList(libDirectories));
-       }
+    public Set<String> getLibDirectories() {
+        return libDirectories;
+    }
+
+    public PluginClasspath addLibDirectories(String... libDirectories) {
+        return addLibDirectories(Arrays.asList(libDirectories));
+    }
+
+    public PluginClasspath addLibDirectories(Collection<String> libDirectories) {
+        this.libDirectories.addAll(libDirectories);
+
+        return this;
+    }
 
 }