diff --git a/s-pipes-modules-utils/s-pipes-module-creator-maven-plugin/src/main/java/RdfAnnotationProcessorMojo.java b/s-pipes-modules-utils/s-pipes-module-creator-maven-plugin/src/main/java/RdfAnnotationProcessorMojo.java
index 4de3cc2d..621c5775 100644
--- a/s-pipes-modules-utils/s-pipes-module-creator-maven-plugin/src/main/java/RdfAnnotationProcessorMojo.java
+++ b/s-pipes-modules-utils/s-pipes-module-creator-maven-plugin/src/main/java/RdfAnnotationProcessorMojo.java
@@ -52,21 +52,32 @@ public class RdfAnnotationProcessorMojo extends AbstractMojo {
@Parameter(defaultValue = "${project}", readonly = true, required = true)
MavenProject project;
- @Parameter(defaultValue = "${project.groupId}", readonly = true, required = true)
- String javaModuleName;
-
- @Parameter(required = false, readonly = true)
- String moduleClassName;
+ /**
+ * The mode in which the plugin is running. 2 values are supported:
+ *
+ * - RDF_FOR_MODULE - Generate an RDF ontology for a single module.
+ * Presumes that the pom.xml belongs to the module itself.
+ * - RDF_FOR_ALL_CHILDREN - Generate an RDF ontology that contains
+ * all modules from this Maven project's submodules. In this mode, the plugin will try to
+ * look through all available classes and find those annotated as SPipes Modules.
+ *
+ * Defaults to RDF_FOR_ALL_CHILDREN if no mode is explicitly specified.
+ */
+ @Parameter(readonly = true)
+ GenerationMode mode;
- @Parameter(required = false, readonly = true)
+ /**
+ * The Java module which should be scanned for the SPipes Module classes.
+ */
+ @Parameter(required = true, readonly = true)
String modulePackageName;
- @Parameter(required = false, readonly = true)
+ /**
+ * Filename of the ontology file generated by the plugin.
+ */
+ @Parameter(required = true, readonly = true)
String ontologyFilename;
- @Parameter(required = false, readonly = true)
- GenerationMode mode;
-
enum GenerationMode {
RDF_FOR_MODULE,
RDF_FOR_ALL_CHILDREN
@@ -105,6 +116,7 @@ public void execute() throws MojoExecutionException {
}
+ @SuppressWarnings("unchecked") // Maven returns untyped list which must be manually retyped
private void generateRdfForAllModules() throws MalformedURLException, ClassNotFoundException, FileNotFoundException {
//read all submodules
getLog().info("Generating an RDF for all sub-modules");
@@ -113,7 +125,8 @@ private void generateRdfForAllModules() throws MalformedURLException, ClassNotFo
//find module's main class
var moduleClasses = readAllModuleClasses(submodule);
- getLog().info("Module: " + submodule.getName() + " | Classes: [" + moduleClasses.stream()
+ getLog().info("Scanned maven module '" + submodule.getName() + "' and found " + moduleClasses.size()
+ + " SPipes Module(s): [" + moduleClasses.stream()
.map(Class::getSimpleName)
.collect(Collectors.joining(", ")) + "]");
@@ -129,7 +142,7 @@ private void generateRdfForAllModules() throws MalformedURLException, ClassNotFo
}
writeModelToStdout(model);
try {
- writeToTargetFolderFile(model, "all-modules.ttl");
+ writeToTargetFolderFile(model, ontologyFilename);
} catch (IOException e) {
getLog().error("Failed to write model to the output file", e);
}
@@ -164,7 +177,9 @@ private Set> readAllModuleClasses(MavenProject project) throws Malforme
var reflectionConfig = new ConfigurationBuilder()
.setUrls(ClasspathHelper.forClassLoader(classLoader))
.setScanners(new SubTypesScanner(false), new TypeAnnotationsScanner())
- .filterInputsBy(new FilterBuilder().includePackage(modulePackageName));
+ .filterInputsBy(new FilterBuilder().includePackage(modulePackageName))
+ .setExpandSuperTypes(false);
+
var classSearcher = new Reflections(reflectionConfig);
//Find classes with the module annotation
diff --git a/s-pipes-modules/pom.xml b/s-pipes-modules/pom.xml
index b566649f..a6f7f996 100644
--- a/s-pipes-modules/pom.xml
+++ b/s-pipes-modules/pom.xml
@@ -51,25 +51,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ cz.cvut.kbss
+ s-pipes-module-creator-maven-plugin
+ ${project.parent.version}
+ false
+
+
+
+ process-annotations
+
+
+ RDF_FOR_ALL_CHILDREN
+ cz.cvut.spipes
+ all-modules.ttl
+
+
+
+