Przeglądaj źródła

Use interfaces to standardize the library... interface

Toni Helenius 2 lat temu
rodzic
commit
55644d3d40

+ 8 - 8
jme3-templates/src/com/jme3/gde/templates/files/freemarker/build.gradle.ftl

@@ -47,36 +47,36 @@ dependencies {
   
   // GUI Library
   <#if guiLibrary.isCoreJmeLibrary == true>
-  implementation "${guiLibrary.artifact}:$jmeVer"
+  implementation "${guiLibrary.groupId}:${guiLibrary.artifactId}:$jmeVer"
   <#else>
-  implementation "${guiLibrary.artifact}"
+  implementation "${guiLibrary.groupId}:${guiLibrary.artifactId}:${guiLibrary.version}"
   </#if>
   </#if>
   <#if physicsLibrary.label != "">
   
   // Physics Library
   <#if physicsLibrary.isCoreJmeLibrary == true>
-  implementation "${physicsLibrary.artifact}:$jmeVer"
+  implementation "${physicsLibrary.groupId}:${physicsLibrary.artifactId}:$jmeVer"
   <#else>
-  implementation "${physicsLibrary.artifact}"
+  implementation "${physicsLibrary.groupId}:${physicsLibrary.artifactId}:${physicsLibrary.version}"
   </#if>
   </#if>
   <#if networkingLibrary.label != "">
   
   // Networking Library
   <#if networkingLibrary.isCoreJmeLibrary == true>
-  implementation "${networkingLibrary.artifact}:$jmeVer"
+  implementation "${networkingLibrary.groupId}:${networkingLibrary.artifactId}:$jmeVer"
   <#else>
-  implementation "${networkingLibrary.artifact}"
+  implementation "${networkingLibrary.groupId}:${networkingLibrary.artifactId}:${networkingLibrary.version}"
   </#if>
   </#if>
 
   // Additional Libraries
   <#list additionalLibraries as additionalLibrary>
   <#if additionalLibrary.isCoreJmeLibrary == true>
-  implementation "${additionalLibrary.artifact}:$jmeVer"
+  implementation "${additionalLibrary.groupId}:${additionalLibrary.artifactId}:$jmeVer"
   <#else>
-  implementation "${additionalLibrary.artifact}"
+  implementation "${additionalLibrary.groupId}:${additionalLibrary.artifactId}:${additionalLibrary.version}"
   </#if>
   </#list>
 

+ 1 - 1
jme3-templates/src/com/jme3/gde/templates/gradledesktop/GradleDesktopGameGuiPanelVisual.java

@@ -50,7 +50,7 @@ import org.openide.awt.Mnemonics;
 import org.openide.util.NbBundle;
 
 /**
- * UI Compoment for the New Gradle Game Wizard GUI panel.
+ * UI Component for the New Gradle Game Wizard GUI panel.
  *
  * @author peedeeboy
  */

+ 61 - 38
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/AdditionalLibrary.java

@@ -65,45 +65,53 @@ import org.openide.util.NbBundle;
  *
  * @author peedeeboy
  */
-public enum AdditionalLibrary {
+public enum AdditionalLibrary implements TemplateLibrary {
 
     JME3_EFFECTS("jMonkeyEngine Effects (jme3-effects)",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.jme3-effects.description"),
-            "org.jmonkeyengine:jme3-effects", true),
+            "org.jmonkeyengine", "jme3-effects",
+            null, true),
     JME3_TERRAIN("jMonkeyEngine TerraMonkey (jme3-terrain)",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.jme3-terrain.description"),
-            "org.jmonkeyengine:jme3-terrain", true),
+            "org.jmonkeyengine", "jme3-terrain",
+            null, true),
     JME3_TESTDATA("jMonkeyEngine Test Data (jme3-testdata)",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.jme3-testdata.description"),
-            "org.jmonkeyengine:jme3-testdata", true),
+            "org.jmonkeyengine", "jme3-testdata",
+            null, true),
     JME3_VR("jMonkeyEngine Virtual Reality (jme3-vr)",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.jme3-vr.description"),
-            "org.jmonkeyengine:jme3-vr", true),
+            "org.jmonkeyengine", "jme3-vr",
+            null, true),
     HEART("Heart Library", NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.heart.description"),
-            "com.github.stephengold:Heart:8.1.0", false),
+            "com.github.stephengold", "Heart",
+            "8.1.0", false),
     PARTICLE_MONKEY("Particle Monkey",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.particlemonkey.description"),
-            "com.github.Jeddic:particlemonkey:1.0.2", false),
+            "com.github.Jeddic", "particlemonkey",
+            "1.0.2", false),
     SHADERBLOW_EX("ShaderBlowEx", NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.shaderblowex.description"),
-            "com.github.polincdev:ShaderBlowEx:master-SNAPSHOT", false),
+            "com.github.polincdev", "ShaderBlowEx",
+            "master-SNAPSHOT", false),
     SIO2("SiO2", NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.sio2.description"),
-            "com.simsilica:sio2:1.7.0", false),
+            "com.simsilica", "sio2",
+            "1.7.0", false),
     ZAY_ES("Zay-ES Entity Component System",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.zayes.description"),
-            "com.simsilica:zay-es:1.4.0", false),
+            "com.simsilica", "zay-es", "1.4.0", false),
     ZAY_ES_NET("Zay-ES-Net Networking Extension",
             NbBundle.getMessage(AdditionalLibrary.class,
             "additionalLibrary.zayesnet.description"),
-            "com.simsilica:zay-es-net:1.5.0", false),;
+            "com.simsilica", "zay-es-net", "1.5.0", false);
 
     /**
      * The name of the library. This will be displayed in the jComboBox in the
@@ -116,13 +124,17 @@ public enum AdditionalLibrary {
      */
     private final String description;
     /**
-     * Gradle artifact string. If this is <strong>not</strong> a core JME
-     * library, then the artifact string should include the version number. If
-     * the library <strong>is</strong> a core JME library, then the version
-     * should be omitted, as they jMonkeyEngine version will be appended
-     * automatically by the template.
+     * Maven artifact ID
      */
-    private final String artifact;
+    private final String artifactId;
+    /**
+     * Maven group ID
+     */
+    private final String groupId;
+    /**
+     * Default artifact version to be used
+     */
+    private final String defaultVersion;
     /**
      * Is this library a core jMonkeyEngine library? True if the library is a
      * part of jMonkeyengine, false if it is 3rd party.
@@ -134,14 +146,19 @@ public enum AdditionalLibrary {
      *
      * @param label The name of the library.
      * @param description Long description of the library.
-     * @param artifact Gradle artifact string.
+     * @param groupId Maven group ID.
+     * @param artifactId Maven artifact ID.
+     * @param defaultVersion Default version is used if no version info is found
+     * from Maven
      * @param isCoreJmeLibrary Is this library a core jMonkeyEngine library?
      */
-    AdditionalLibrary(String label, String description, String artifact,
-            boolean isCoreJmeLibrary) {
+    AdditionalLibrary(String label, String description, String groupId,
+            String artifactId, String defaultVersion, boolean isCoreJmeLibrary) {
         this.label = label;
         this.description = description;
-        this.artifact = artifact;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.defaultVersion = defaultVersion;
         this.isCoreJmeLibrary = isCoreJmeLibrary;
     }
 
@@ -164,31 +181,37 @@ public enum AdditionalLibrary {
     }
 
     /**
-     * Get the Gradle artifact string.
+     * Override the <code>toString()</code> method to return the label, so that
+     * this enum will display nicely in a jComboBox.
      *
-     * @return the Gradle artifact string.
+     * @return <code>label</code> as a String
      */
-    public String getArtifact() {
-        return artifact;
+    @Override
+    public String toString() {
+        return label;
     }
 
-    /**
-     * Is this a Core jMonkeyEngine library?
-     *
-     * @return true if this is a core jMonkeyEngine library.
-     */
+    public String getDefaultVersion() {
+        return defaultVersion;
+    }
+
+    @Override
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    @Override
     public boolean getIsCoreJmeLibrary() {
         return isCoreJmeLibrary;
     }
 
-    /**
-     * Override the <code>toString()</code> method to return the label, so that
-     * this enum will display nicely in a jComboBox.
-     *
-     * @return <code>label</code> as a String
-     */
     @Override
-    public String toString() {
-        return label;
+    public String getVersion() {
+        return defaultVersion;
     }
 }

+ 45 - 31
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/GUILibrary.java

@@ -64,16 +64,19 @@ import org.openide.util.NbBundle;
  *
  * @author peedeeboy
  */
-public enum GUILibrary {
+public enum GUILibrary implements TemplateLibrary {
 
     NONE("", NbBundle.getMessage(GUILibrary.class,
-            "guilibrary.none.description"), "", false),
+            "guilibrary.none.description"), null, null,
+            null, false),
     NIFTY("Nifty", NbBundle.getMessage(GUILibrary.class, 
             "guilibrary.nifty.description"),
-            "org.jmonkeyengine:jme3-niftygui", true),
+            "org.jmonkeyengine", "jme3-niftygui",
+            null, true),
     LEMUR("Lemur", NbBundle.getMessage(GUILibrary.class,
             "guilibrary.lemur.description"),
-            "com.simsilica:lemur:1.16.0", false);
+            "com.simsilica", "lemur",
+            "1.16.0", false);
 
     /**
      * The name of the library. This will be displayed in the jComboBox in the
@@ -86,13 +89,17 @@ public enum GUILibrary {
      */
     private final String description;
     /**
-     * Gradle artifact string. If this is <strong>not</strong> a core JME
-     * library, then the artifact string should include the version number. If
-     * the library <strong>is</strong> a core JME library, then the version
-     * should be omitted, as they jMonkeyEngine version will be appended
-     * automatically by the template.
+     * Maven artifact ID
      */
-    private final String artifact;
+    private final String artifactId;
+    /**
+     * Maven group ID
+     */
+    private final String groupId;
+    /**
+     * Default artifact version to be used
+     */
+    private final String defaultVersion;
     /**
      * Is this library a core jMonkeyEngine library? True if the library is a
      * part of jMonkeyengine, false if it is 3rd party.
@@ -104,14 +111,19 @@ public enum GUILibrary {
      *
      * @param label The name of the library.
      * @param description Long description of the library.
-     * @param artifact Gradle artifact string.
+     * @param groupId Maven group ID.
+     * @param artifactId Maven artifact ID.
+     * @param defaultVersion Default version is used if no version info is found
+     * from Maven
      * @param isCoreJmeLibrary Is this library a core jMonkeyEngine library?
      */
-    GUILibrary(String label, String description, String artifact,
-            boolean isCoreJmeLibrary) {
+    GUILibrary(String label, String description, String groupId,
+            String artifactId, String defaultVersion, boolean isCoreJmeLibrary) {
         this.label = label;
         this.description = description;
-        this.artifact = artifact;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.defaultVersion = defaultVersion;
         this.isCoreJmeLibrary = isCoreJmeLibrary;
     }
 
@@ -134,31 +146,33 @@ public enum GUILibrary {
     }
 
     /**
-     * Get the Gradle artifact string.
+     * Override the <code>toString()</code> method to return the label, so that
+     * this enum will display nicely in a jComboBox.
      *
-     * @return the Gradle artifact string.
+     * @return <code>label</code> as a String
      */
-    public String getArtifact() {
-        return artifact;
+    @Override
+    public String toString() {
+        return label;
     }
 
-    /**
-     * Is this a Core jMonkeyEngine library?
-     *
-     * @return true if this is a core jMonkeyEngine library.
-     */
+    @Override
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    @Override
     public boolean getIsCoreJmeLibrary() {
         return isCoreJmeLibrary;
     }
 
-    /**
-     * Override the <code>toString()</code> method to return the label, so that
-     * this enum will display nicely in a jComboBox.
-     *
-     * @return <code>label</code> as a String
-     */
     @Override
-    public String toString() {
-        return label;
+    public String getVersion() {
+        return defaultVersion;
     }
 }

+ 60 - 0
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/MavenArtifact.java

@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2009-2023 jMonkeyEngine
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package com.jme3.gde.templates.gradledesktop.options;
+
+/**
+ * Represents Maven artifact
+ */
+public interface MavenArtifact {
+
+    /**
+     * Get the Maven group ID
+     *
+     * @return group ID
+     */
+    String getGroupId();
+
+    /**
+     * Get the Maven artifact ID
+     *
+     * @return artifact ID
+     */
+    String getArtifactId();
+
+    /**
+     * Get the artifact version string
+     *
+     * @return version string
+     */
+    String getVersion();
+
+}

+ 47 - 32
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/NetworkingLibrary.java

@@ -63,19 +63,23 @@ import org.openide.util.NbBundle;
  *
  * @author peedeeboy
  */
-public enum NetworkingLibrary {
+public enum NetworkingLibrary implements TemplateLibrary {
 
     NONE("", NbBundle.getMessage(NetworkingLibrary.class,
-            "networkinglibrary.none.description"), "", false),
+            "networkinglibrary.none.description"), null, null,
+            null, false),
     SPIDERMONKEY("SpiderMonkey", NbBundle.getMessage(NetworkingLibrary.class,
             "networkinglibrary.spidermonkey.description"),
-            "org.jmonkeyengine:jme3-networking", true),
+            "org.jmonkeyengine", "jme3-networking",
+            null, true),
     MONKEYNETTY("MonkeyNetty", NbBundle.getMessage(NetworkingLibrary.class,
             "networkinglibrary.monkeynetty.description"),
-            "io.tlf.monkeynetty:monkey-netty:0.1.1", false),
+            "io.tlf.monkeynetty", "monkey-netty",
+            "0.1.1", false),
     SIMETHEREAL("SimEthereal", NbBundle.getMessage(NetworkingLibrary.class,
             "networkinglibrary.simethereal.description"),
-            "com.simsilica:sim-ethereal:1.7.0", false);
+            "com.simsilica", "sim-ethereal",
+            "1.7.0", false);
 
     /**
      * The name of the library. This will be displayed in the jComboBox in the
@@ -88,13 +92,17 @@ public enum NetworkingLibrary {
      */
     private final String description;
     /**
-     * Gradle artifact string. If this is <strong>not</strong> a core JME
-     * library, then the artifact string should include the version number. If
-     * the library <strong>is</strong> a core JME library, then the version
-     * should be omitted, as they jMonkeyEngine version will be appended
-     * automatically by the template.
+     * Maven artifact ID
      */
-    private final String artifact;
+    private final String artifactId;
+    /**
+     * Maven group ID
+     */
+    private final String groupId;
+    /**
+     * Default artifact version to be used
+     */
+    private final String defaultVersion;
     /**
      * Is this library a core jMonkeyEngine library? True if the library is a
      * part of jMonkeyengine, false if it is 3rd party.
@@ -106,14 +114,19 @@ public enum NetworkingLibrary {
      *
      * @param label The name of the library.
      * @param description Long description of the library.
-     * @param artifact Gradle artifact string.
+     * @param groupId Maven group ID.
+     * @param artifactId Maven artifact ID.
+     * @param defaultVersion Default version is used if no version info is found
+     * from Maven
      * @param isCoreJmeLibrary Is this library a core jMonkeyEngine library?
      */
-    NetworkingLibrary(String label, String description, String artifact,
-            boolean isCoreJmeLibrary) {
+    NetworkingLibrary(String label, String description, String groupId,
+            String artifactId, String defaultVersion, boolean isCoreJmeLibrary) {
         this.label = label;
         this.description = description;
-        this.artifact = artifact;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.defaultVersion = defaultVersion;
         this.isCoreJmeLibrary = isCoreJmeLibrary;
     }
 
@@ -136,31 +149,33 @@ public enum NetworkingLibrary {
     }
 
     /**
-     * Get the Gradle artifact string.
+     * Override the <code>toString()</code> method to return the label, so that
+     * this enum will display nicely in a jComboBox.
      *
-     * @return the Gradle artifact string.
+     * @return <code>label</code> as a String
      */
-    public String getArtifact() {
-        return artifact;
+    @Override
+    public String toString() {
+        return this.label;
     }
 
-    /**
-     * Is this a Core jMonkeyEngine library?
-     *
-     * @return true if this is a core jMonkeyEngine library
-     */
+    @Override
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    @Override
     public boolean getIsCoreJmeLibrary() {
         return isCoreJmeLibrary;
     }
 
-    /**
-     * Override the <code>toString()</code> method to return the label, so that
-     * this enum will display nicely in a jComboBox.
-     *
-     * @return <code>label</code> as a String
-     */
     @Override
-    public String toString() {
-        return this.label;
+    public String getVersion() {
+        return defaultVersion;
     }
 }

+ 45 - 31
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/PhysicsLibrary.java

@@ -63,16 +63,19 @@ import org.openide.util.NbBundle;
  *
  * @author peedeeboy
  */
-public enum PhysicsLibrary {
+public enum PhysicsLibrary implements TemplateLibrary {
 
     NONE("", NbBundle.getMessage(GUILibrary.class,
-            "physicslibrary.none.description"), "", false),
+            "physicslibrary.none.description"), null, null,
+            null, false),
     JBULLET("jBullet", NbBundle.getMessage(GUILibrary.class,
             "physicslibrary.jbullet.description"),
-            "org.jmonkeyengine:jme3-jbullet", true),
+            "org.jmonkeyengine", "jme3-jbullet",
+            null, true),
     MINIE("Minie", NbBundle.getMessage(PhysicsLibrary.class,
             "physicslibrary.minie.description"),
-            "com.github.stephengold:Minie:5.0.0", false);
+            "com.github.stephengold", "Minie",
+            "5.0.0", false);
 
     /**
      * The name of the library. This will be displayed in the jComboBox in the
@@ -85,13 +88,17 @@ public enum PhysicsLibrary {
      */
     private final String description;
     /**
-     * Gradle artifact string. If this is <strong>not</strong> a core JME
-     * library, then the artifact string should include the version number. If
-     * the library <strong>is</strong> a core JME library, then the version
-     * should be omitted, as they jMonkeyEngine version will be appended
-     * automatically by the template.
+     * Maven artifact ID
      */
-    private final String artifact;
+    private final String artifactId;
+    /**
+     * Maven group ID
+     */
+    private final String groupId;
+    /**
+     * Default artifact version to be used
+     */
+    private final String defaultVersion;
     /**
      * Is this library a core jMonkeyEngine library? True if the library is a
      * part of jMonkeyengine, false if it is 3rd party.
@@ -103,14 +110,19 @@ public enum PhysicsLibrary {
      *
      * @param label The name of the library.
      * @param description Long description of the library.
-     * @param artifact Gradle artifact string.
+     * @param groupId Maven group ID.
+     * @param artifactId Maven artifact ID.
+     * @param defaultVersion Default version is used if no version info is found
+     * from Maven
      * @param isCoreJmeLibrary Is this library a core jMonkeyEngine library?
      */
-    PhysicsLibrary(String label, String description, String artifact,
-            boolean isCoreJmeLibrary) {
+    PhysicsLibrary(String label, String description, String groupId,
+            String artifactId, String defaultVersion, boolean isCoreJmeLibrary) {
         this.label = label;
         this.description = description;
-        this.artifact = artifact;
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.defaultVersion = defaultVersion;
         this.isCoreJmeLibrary = isCoreJmeLibrary;
     }
 
@@ -133,31 +145,33 @@ public enum PhysicsLibrary {
     }
 
     /**
-     * Get the Gradle artifact string.
+     * Override the <code>toString()</code> method to return the label, so that
+     * this enum will display nicely in a jComboBox.
      *
-     * @return the Gradle artifact string.
+     * @return <code>label</code> as a String
      */
-    public String getArtifact() {
-        return artifact;
+    @Override
+    public String toString() {
+        return this.label;
     }
 
-    /**
-     * Is this a Core jMonkeyEngine library?
-     *
-     * @return true if this is a core jMonkeyEngine library
-     */
+    @Override
+    public String getGroupId() {
+        return groupId;
+    }
+
+    @Override
+    public String getArtifactId() {
+        return artifactId;
+    }
+
+    @Override
     public boolean getIsCoreJmeLibrary() {
         return isCoreJmeLibrary;
     }
 
-    /**
-     * Override the <code>toString()</code> method to return the label, so that
-     * this enum will display nicely in a jComboBox.
-     *
-     * @return <code>label</code> as a String
-     */
     @Override
-    public String toString() {
-        return this.label;
+    public String getVersion() {
+        return defaultVersion;
     }
 }

+ 46 - 0
jme3-templates/src/com/jme3/gde/templates/gradledesktop/options/TemplateLibrary.java

@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2009-2023 jMonkeyEngine
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
+ *   may be used to endorse or promote products derived from this software
+ *   without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package com.jme3.gde.templates.gradledesktop.options;
+
+/**
+ * Our Gradle template library
+ */
+public interface TemplateLibrary extends MavenArtifact {
+
+    /**
+     * Is this a Core jMonkeyEngine library?
+     *
+     * @return true if this is a core jMonkeyEngine library
+     */
+    boolean getIsCoreJmeLibrary();
+
+}