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());
}
}
*/
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.
*/
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;
+ }
}