diff --git a/common/build.gradle b/common/build.gradle --- a/common/build.gradle +++ b/common/build.gradle @@ -6,6 +6,9 @@ plugins { java { withJavadocJar() withSourcesJar() + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } } dependencies { @@ -14,7 +17,7 @@ dependencies { task printVersion{ doLast { - println "project: $project.groupId:$project.name:$project.version" + println "project: $project.group:$project.name:$project.version" println "jar: ${->jar.archiveFileName.get()}" } } @@ -25,4 +28,12 @@ publishing { url "${System.properties["user.home"]}/ivy-repo" } } + publications { + ivy(IvyPublication) { + from components.java + descriptor.description { + text = providers.provider({ description }) + } + } + } } \ No newline at end of file diff --git a/common/src/main/java/org/implab/gradle/common/ProjectMixin.java b/common/src/main/java/org/implab/gradle/common/ProjectMixin.java --- a/common/src/main/java/org/implab/gradle/common/ProjectMixin.java +++ b/common/src/main/java/org/implab/gradle/common/ProjectMixin.java @@ -10,6 +10,7 @@ import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.file.Directory; import org.gradle.api.tasks.TaskProvider; +import org.implab.gradle.common.utils.ExtraProps; /** Project configuration traits */ public interface ProjectMixin { @@ -37,6 +38,15 @@ public interface ProjectMixin { return getProject().getPlugins().findPlugin(clazz); } + /** + * @param classes The list of classes to register as extensions + */ + default void exportClasses(Class... classes) { + var props = ExtraProps.of(getProject()); + for (var clazz : classes) + props.put(clazz.getSimpleName(), clazz); + } + /** Creates and register a new project extension. * * @param The type of the extension diff --git a/common/src/main/java/org/implab/gradle/common/utils/ExtraProps.java b/common/src/main/java/org/implab/gradle/common/utils/ExtraProps.java --- a/common/src/main/java/org/implab/gradle/common/utils/ExtraProps.java +++ b/common/src/main/java/org/implab/gradle/common/utils/ExtraProps.java @@ -7,10 +7,10 @@ import org.gradle.api.plugins.ExtensionA public class ExtraProps { public static Map of(Object target) { - return switch (target) { - case ExtensionAware ext -> ext.getExtensions().getExtraProperties().getProperties(); - default -> Map.of(); - }; + if (target instanceof ExtensionAware ext) + return ext.getExtensions().getExtraProperties().getProperties(); + else + return Map.of(); } } diff --git a/gradle/gradle.properties b/gradle.properties rename from gradle/gradle.properties rename to gradle.properties --- a/gradle/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -groupId=org.implab.gradle +group=org.implab.gradle version=1.0 \ No newline at end of file