This is an automated email from the ASF dual-hosted git repository.
gitgabrio pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-kie-kogito-runtimes.git
The following commit(s) were added to refs/heads/main by this push:
new a795aac3aa [incubator-kie-issues#1068] Fix gradle build output (#3471)
a795aac3aa is described below
commit a795aac3aac337a2da645b700bafefdd516ff147
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Wed Apr 17 10:33:59 2024 +0200
[incubator-kie-issues#1068] Fix gradle build output (#3471)
* [test-gradle-target] WIP
* [incubator-kie-issues#1068] Enhancing dual build-system management.
Locally working
* [incubator-kie-issues#1068] Fix classes path for multimodule project
* [incubator-kie-issues#1068] Restored kogito.codegen.sources.directory
usage. Unified GeneratedFileWriter instantiation and usage
* [incubator-kie-issues#1068] REmove duplicated class. REstored test
* [incubator-kie-issues#1068] Remove unused parameter
* [incubator-kie-issues#1068] Fixed formatting
* [incubator-kie-issues#1068] Fixed formatting
---------
Co-authored-by: Gabriele-Cardosi <[email protected]>
---
.../runner/KogitoDMNScenarioRunnerHelper.java | 3 +-
.../context/impl/AbstractKogitoBuildContext.java | 3 +-
.../codegen/core/utils/GeneratedFileWriter.java | 153 ---------------------
.../prediction/PMMLRestResourceGeneratorTest.java | 3 +-
.../prediction/PredictionCodegenFactoryTest.java | 3 +-
.../prediction/PredictionCodegenGenerateTest.java | 3 +-
.../PredictionCodegenInternalGenerateTest.java | 3 +-
.../kie/kogito/maven/plugin/AbstractKieMojo.java | 33 +++--
.../kie/kogito/maven/plugin/GenerateModelMojo.java | 26 ++--
.../kogito/maven/plugin/ProcessClassesMojo.java | 6 +-
.../common/deployment/KogitoAssetsProcessor.java | 44 +++---
.../deployment/KogitoQuarkusResourceUtils.java | 19 +--
.../deployment/KogitoAssetsProcessorTest.java | 43 ++++--
13 files changed, 98 insertions(+), 244 deletions(-)
diff --git
a/drools/kogito-scenario-simulation/src/main/java/org/kogito/scenariosimulation/runner/KogitoDMNScenarioRunnerHelper.java
b/drools/kogito-scenario-simulation/src/main/java/org/kogito/scenariosimulation/runner/KogitoDMNScenarioRunnerHelper.java
index 9d6f96ef9e..2babf30313 100644
---
a/drools/kogito-scenario-simulation/src/main/java/org/kogito/scenariosimulation/runner/KogitoDMNScenarioRunnerHelper.java
+++
b/drools/kogito-scenario-simulation/src/main/java/org/kogito/scenariosimulation/runner/KogitoDMNScenarioRunnerHelper.java
@@ -28,6 +28,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
+import org.drools.codegen.common.AppPaths;
import org.drools.io.FileSystemResource;
import org.drools.scenariosimulation.api.model.ScenarioSimulationModel;
import org.drools.scenariosimulation.api.model.ScesimModelDescriptor;
@@ -53,7 +54,7 @@ public class KogitoDMNScenarioRunnerHelper extends
DMNScenarioRunnerHelper {
private DMNRuntime dmnRuntime = initDmnRuntime();
- private static final String targetFolder = File.separator + "target" +
File.separator;
+ private static final String targetFolder = File.separator +
AppPaths.TARGET_DIR + File.separator;
private static final String generatedResourcesFolder = targetFolder +
"generated-resources" + File.separator;
@Override
diff --git
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
index 25a0e8794d..d46cfdb118 100644
---
a/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
+++
b/kogito-codegen-modules/kogito-codegen-api/src/main/java/org/kie/kogito/codegen/api/context/impl/AbstractKogitoBuildContext.java
@@ -21,7 +21,6 @@ package org.kie.kogito.codegen.api.context.impl;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
-import java.nio.file.Path;
import java.text.MessageFormat;
import java.util.Collection;
import java.util.Collections;
@@ -258,7 +257,7 @@ public abstract class AbstractKogitoBuildContext implements
KogitoBuildContext {
protected Predicate<String> classAvailabilityResolver = this::hasClass;
protected Predicate<Class<?>> classSubTypeAvailabilityResolver = c ->
false;
// default fallback value (usually overridden)
- protected AppPaths appPaths = AppPaths.fromProjectDir(new
File(".").toPath(), Path.of(".", AppPaths.TARGET_DIR));
+ protected AppPaths appPaths = AppPaths.fromProjectDir(new
File(".").toPath());
protected KogitoGAV gav;
protected AbstractBuilder() {
diff --git
a/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/utils/GeneratedFileWriter.java
b/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/utils/GeneratedFileWriter.java
deleted file mode 100644
index d596702592..0000000000
---
a/kogito-codegen-modules/kogito-codegen-core/src/main/java/org/kie/kogito/codegen/core/utils/GeneratedFileWriter.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.kie.kogito.codegen.core.utils;
-
-import java.io.IOException;
-import java.io.UncheckedIOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collection;
-
-import org.drools.codegen.common.GeneratedFile;
-import org.drools.codegen.common.GeneratedFileType;
-
-/**
- * Writes {@link GeneratedFile} to the right directory, depending on its
- * {@link GeneratedFileType.Category}
- */
-public class GeneratedFileWriter {
-
- public static class Builder {
-
- private final String classesDir;
- private final String sourcesDir;
- private final String resourcePath;
- private final String scaffoldedSourcesDir;
-
- /**
- *
- * @param classesDir usually target/classes/
- * @param sourcesDir usually target/generated-sources/kogito/
- * @param resourcesDir usually target/generated-resources/kogito/
- * @param scaffoldedSourcesDir usually src/main/java/
- */
- public Builder(String classesDir, String sourcesDir, String
resourcesDir, String scaffoldedSourcesDir) {
- this.classesDir = classesDir;
- this.sourcesDir = sourcesDir;
- this.resourcePath = resourcesDir;
- this.scaffoldedSourcesDir = scaffoldedSourcesDir;
- }
-
- /**
- * @param basePath the path to which the given subdirectories will be
written
- * e.g. ${basePath}/${classesDir}/myfile.ext
- *
- */
- public GeneratedFileWriter build(Path basePath) {
- return new GeneratedFileWriter(
- basePath.resolve(classesDir),
- basePath.resolve(sourcesDir),
- basePath.resolve(resourcePath),
- basePath.resolve(scaffoldedSourcesDir));
- }
- }
-
- private final Path classesDir;
- private final Path sourcesDir;
- private final Path resourcePath;
- private final Path scaffoldedSourcesDir;
-
- public static final String DEFAULT_SOURCES_DIR =
"generated-sources/kogito/";
- public static final String DEFAULT_RESOURCE_PATH =
"generated-resources/kogito/";
- public static final String DEFAULT_SCAFFOLDED_SOURCES_DIR =
"src/main/java/";
- public static final String DEFAULT_CLASSES_DIR = "target/classes";
-
- /**
- *
- * @param classesDir usually {@link #DEFAULT_CLASSES_DIR}
- * @param sourcesDir usually target/generated-sources/kogito/. See {@link
#DEFAULT_SOURCES_DIR}
- * @param resourcePath usually target/generated-resources/kogito/ {@link
#DEFAULT_RESOURCE_PATH}
- * @param scaffoldedSourcesDir usually {@link
#DEFAULT_SCAFFOLDED_SOURCES_DIR}
- */
- public GeneratedFileWriter(Path classesDir, Path sourcesDir, Path
resourcePath, Path scaffoldedSourcesDir) {
- this.classesDir = classesDir;
- this.sourcesDir = sourcesDir;
- this.resourcePath = resourcePath;
- this.scaffoldedSourcesDir = scaffoldedSourcesDir;
- }
-
- public void writeAll(Collection<GeneratedFile> generatedFiles) {
- generatedFiles.forEach(this::write);
- }
-
- public void write(GeneratedFile f) throws UncheckedIOException {
- try {
- GeneratedFileType.Category category = f.category();
- switch (category) {
- case INTERNAL_RESOURCE: // since codegen happens after
maven-resource-plugin (both in Quarkus and SB), need to manually place in the
correct (CP) location
- case STATIC_HTTP_RESOURCE:
- case COMPILED_CLASS:
- writeGeneratedFile(f, classesDir);
- break;
- case SOURCE:
- if (f.type().isCustomizable()) {
- writeGeneratedFile(f, scaffoldedSourcesDir);
- } else {
- writeGeneratedFile(f, sourcesDir);
- }
- break;
- default:
- throw new IllegalArgumentException("Unknown Category " +
category.name());
- }
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- }
-
- public Path getClassesDir() {
- return classesDir;
- }
-
- public Path getSourcesDir() {
- return sourcesDir;
- }
-
- public Path getResourcePath() {
- return resourcePath;
- }
-
- public Path getScaffoldedSourcesDir() {
- return scaffoldedSourcesDir;
- }
-
- private void writeGeneratedFile(GeneratedFile f, Path location) throws
IOException {
- if (location == null) {
- return;
- }
- Files.write(
- pathOf(location, f.path()),
- f.contents());
- }
-
- private Path pathOf(Path location, Path end) throws IOException {
- Path path = location.resolve(end);
- Files.createDirectories(path.getParent());
- return path;
- }
-}
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
index 8fe6c0dd94..b69a9aa614 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PMMLRestResourceGeneratorTest.java
@@ -22,6 +22,7 @@ import java.net.URLEncoder;
import java.util.NoSuchElementException;
import java.util.Optional;
+import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.di.impl.CDIDependencyInjectionAnnotator;
import org.drools.util.StringUtils;
import org.junit.jupiter.api.AfterAll;
@@ -80,7 +81,7 @@ class PMMLRestResourceGeneratorTest {
String filePrefix =
URLEncoder.encode(getSanitizedClassName(KIE_PMML_MODEL.getFileName().replace(".pmml",
"")));
String classPrefix =
URLEncoder.encode(getSanitizedClassName(KIE_PMML_MODEL.getName()));
expectedUrl = String.format("/%s/%s", filePrefix, classPrefix);
- System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
"target/test-classes");
+ System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
String.format("%s/test-classes", AppPaths.TARGET_DIR));
}
@AfterAll
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenFactoryTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenFactoryTest.java
index 1c14e042a6..d378b501f7 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenFactoryTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenFactoryTest.java
@@ -21,6 +21,7 @@ package org.kie.kogito.codegen.prediction;
import java.util.Collections;
import java.util.List;
+import org.drools.codegen.common.AppPaths;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.params.ParameterizedTest;
@@ -46,7 +47,7 @@ class PredictionCodegenFactoryTest {
@BeforeAll
public static void setup() {
- System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
"target/test-classes");
+ System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
String.format("%s/test-classes", AppPaths.TARGET_DIR));
}
@AfterAll
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenGenerateTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenGenerateTest.java
index b26c7bbef8..c563288e28 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenGenerateTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenGenerateTest.java
@@ -29,6 +29,7 @@ import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Stream;
+import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.GeneratedFile;
import org.drools.codegen.common.GeneratedFileType;
import org.junit.jupiter.api.AfterAll;
@@ -68,7 +69,7 @@ class PredictionCodegenGenerateTest {
@BeforeAll
public static void setup() {
- System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
"target/test-classes");
+ System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
String.format("%s/test-classes", AppPaths.TARGET_DIR));
}
@AfterAll
diff --git
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenInternalGenerateTest.java
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenInternalGenerateTest.java
index 27b91deb5b..6f6229c4de 100644
---
a/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenInternalGenerateTest.java
+++
b/kogito-codegen-modules/kogito-codegen-predictions/src/test/java/org/kie/kogito/codegen/prediction/PredictionCodegenInternalGenerateTest.java
@@ -25,6 +25,7 @@ import java.util.List;
import java.util.function.Function;
import java.util.stream.Stream;
+import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.GeneratedFile;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
@@ -51,7 +52,7 @@ class PredictionCodegenInternalGenerateTest {
@BeforeAll
public static void setup() {
- System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
"target/test-classes");
+ System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
String.format("%s/test-classes", AppPaths.TARGET_DIR));
}
@AfterAll
diff --git
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
index 81eb6a6c26..b279c5eafc 100644
---
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
+++
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/AbstractKieMojo.java
@@ -22,6 +22,7 @@ import java.io.File;
import java.lang.reflect.Modifier;
import java.net.URL;
import java.net.URLClassLoader;
+import java.nio.file.Path;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
@@ -37,13 +38,13 @@ import org.apache.maven.project.MavenProject;
import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.DroolsModelBuildContext;
import org.drools.codegen.common.GeneratedFile;
+import org.drools.codegen.common.GeneratedFileWriter;
import org.kie.kogito.KogitoGAV;
import org.kie.kogito.codegen.api.Generator;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.JavaKogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.QuarkusKogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.SpringBootKogitoBuildContext;
-import org.kie.kogito.codegen.core.utils.GeneratedFileWriter;
import org.kie.kogito.codegen.decision.DecisionCodegen;
import org.kie.kogito.codegen.prediction.PredictionCodegen;
import org.kie.kogito.codegen.process.ProcessCodegen;
@@ -55,6 +56,8 @@ import org.reflections.util.ConfigurationBuilder;
public abstract class AbstractKieMojo extends AbstractMojo {
+ protected static final GeneratedFileWriter.Builder
generatedFileWriterBuilder = GeneratedFileWriter.builder("kogito",
"kogito.codegen.resources.directory", "kogito.codegen.sources.directory");
+
@Parameter(required = true, defaultValue = "${project.basedir}")
protected File projectDir;
@@ -67,11 +70,8 @@ public abstract class AbstractKieMojo extends AbstractMojo {
@Parameter(required = true, defaultValue =
"${project.build.outputDirectory}")
protected File outputDirectory;
- @Parameter(defaultValue = "${project.build.directory}/" +
GeneratedFileWriter.DEFAULT_SOURCES_DIR)
- protected File generatedSources;
-
- @Parameter(defaultValue = "${project.build.directory}/" +
GeneratedFileWriter.DEFAULT_RESOURCE_PATH)
- protected File generatedResources;
+ @Parameter(required = true, defaultValue = "${project.basedir}")
+ protected File baseDir;
@Parameter(property = "kogito.codegen.persistence", defaultValue = "true")
protected boolean persistence;
@@ -102,7 +102,7 @@ public abstract class AbstractKieMojo extends AbstractMojo {
}
protected KogitoBuildContext discoverKogitoRuntimeContext(ClassLoader
classLoader) {
- AppPaths appPaths = AppPaths.fromProjectDir(projectDir.toPath(),
outputDirectory.toPath());
+ AppPaths appPaths = AppPaths.fromProjectDir(projectDir.toPath());
KogitoBuildContext context = contextBuilder()
.withClassAvailabilityResolver(this::hasClassOnClasspath)
.withClassSubTypeAvailabilityResolver(classSubTypeAvailabilityResolver())
@@ -250,20 +250,27 @@ public abstract class AbstractKieMojo extends
AbstractMojo {
}
protected void writeGeneratedFiles(Collection<GeneratedFile>
generatedFiles) {
- generatedFiles.forEach(this::writeGeneratedFile);
+ GeneratedFileWriter writer = getGeneratedFileWriter();
+ generatedFiles.forEach(generatedFile ->
writeGeneratedFile(generatedFile, writer));
}
protected void writeGeneratedFile(GeneratedFile generatedFile) {
- GeneratedFileWriter writer = new
GeneratedFileWriter(outputDirectory.toPath(),
- generatedSources.toPath(),
- generatedResources.toPath(),
- getSourcesPath().toPath());
+ writeGeneratedFile(generatedFile, getGeneratedFileWriter());
+ }
+ protected void writeGeneratedFile(GeneratedFile generatedFile,
GeneratedFileWriter writer) {
getLog().info("Generating: " + generatedFile.relativePath());
writer.write(generatedFile);
}
protected File getSourcesPath() {
- return generatedSources;
+ // using runtime BT instead of static AppPaths.MAVEN to allow
+ // invocation from GRADLE
+ return Path.of(baseDir.getAbsolutePath(),
AppPaths.BT.GENERATED_SOURCES_PATH.toString()).toFile();
+ }
+
+ protected GeneratedFileWriter getGeneratedFileWriter() {
+ return generatedFileWriterBuilder
+ .build(Path.of(baseDir.getAbsolutePath()));
}
}
diff --git
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/GenerateModelMojo.java
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/GenerateModelMojo.java
index 9b101d390d..b1c3c67510 100644
---
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/GenerateModelMojo.java
+++
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/GenerateModelMojo.java
@@ -54,9 +54,6 @@ public class GenerateModelMojo extends AbstractKieMojo {
public static final PathMatcher drlFileMatcher =
FileSystems.getDefault().getPathMatcher("glob:**.drl");
- @Parameter(property = "kogito.codegen.sources.directory", defaultValue =
"${project.build.directory}/generated-sources/kogito")
- private File customizableSourcesPath;
-
/**
* Partial generation can be used when reprocessing a pre-compiled project
* for faster code-generation. It only generates code for rules and
processes,
@@ -72,19 +69,16 @@ public class GenerateModelMojo extends AbstractKieMojo {
@Parameter(property = "kogito.sources.keep", defaultValue = "false")
private boolean keepSources;
- @Parameter(property = "build.output.directory", readonly = true,
defaultValue = "${project.build.directory}/classes/")
- private String buildOutputDirectory;
-
@Override
public void execute() throws MojoExecutionException {
// TODO to be removed with DROOLS-7090
boolean indexFileDirectorySet = false;
- getLog().debug("execute -> " + buildOutputDirectory);
- if (buildOutputDirectory == null) {
+ getLog().debug("execute -> " + outputDirectory);
+ if (outputDirectory == null) {
throw new MojoExecutionException("${project.build.directory} is
null");
}
if (System.getProperty(INDEXFILE_DIRECTORY_PROPERTY) == null) {
- System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
buildOutputDirectory);
+ System.setProperty(INDEXFILE_DIRECTORY_PROPERTY,
outputDirectory.toString());
indexFileDirectorySet = true;
}
addCompileSourceRoots();
@@ -103,14 +97,8 @@ public class GenerateModelMojo extends AbstractKieMojo {
return onDemand;
}
- @Override
- protected File getSourcesPath() {
- return customizableSourcesPath;
- }
-
protected void addCompileSourceRoots() {
- project.addCompileSourceRoot(getSourcesPath().getPath());
- project.addCompileSourceRoot(generatedSources.getPath());
+
project.addCompileSourceRoot(getGeneratedFileWriter().getScaffoldedSourcesDir().toString());
}
protected void generateModel() throws MojoExecutionException {
@@ -129,9 +117,11 @@ public class GenerateModelMojo extends AbstractKieMojo {
Map<GeneratedFileType, List<GeneratedFile>> mappedGeneratedFiles =
generatedFiles.stream()
.collect(Collectors.groupingBy(GeneratedFile::type));
- mappedGeneratedFiles.entrySet().stream()
+ List<GeneratedFile> generatedUncompiledFiles =
mappedGeneratedFiles.entrySet().stream()
.filter(entry -> !entry.getKey().equals(COMPILED_CLASS))
- .forEach(entry -> writeGeneratedFiles(entry.getValue()));
+ .flatMap(entry -> entry.getValue().stream())
+ .toList();
+ writeGeneratedFiles(generatedUncompiledFiles);
List<GeneratedFile> generatedCompiledFiles =
mappedGeneratedFiles.getOrDefault(COMPILED_CLASS,
Collections.emptyList())
diff --git
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/ProcessClassesMojo.java
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/ProcessClassesMojo.java
index f5ffd9b3d8..ef491c7eca 100644
---
a/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/ProcessClassesMojo.java
+++
b/kogito-maven-plugin/src/main/java/org/kie/kogito/maven/plugin/ProcessClassesMojo.java
@@ -98,14 +98,14 @@ public class ProcessClassesMojo extends AbstractKieMojo {
compileAndWriteClasses(generatedClasses, classLoader, settings);
// Dump resources
- generatedResources.forEach(this::writeGeneratedFile);
+ this.writeGeneratedFiles(generatedResources);
// Json schema generation
Stream<Class<?>> processClassStream =
getReflections().getTypesAnnotatedWith(ProcessInput.class).stream();
-
generateJsonSchema(processClassStream).forEach(this::writeGeneratedFile);
+ writeGeneratedFiles(generateJsonSchema(processClassStream));
Stream<Class<?>> userTaskClassStream =
getReflections().getTypesAnnotatedWith(UserTask.class).stream();
-
generateJsonSchema(userTaskClassStream).forEach(this::writeGeneratedFile);
+ writeGeneratedFiles(generateJsonSchema(userTaskClassStream));
} catch (Exception e) {
throw new MojoExecutionException("Error during processing model
classes", e);
}
diff --git
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessor.java
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessor.java
index ab63a083fd..346a0f5a40 100644
---
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessor.java
+++
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessor.java
@@ -34,6 +34,7 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.DroolsModelBuildContext;
import org.drools.codegen.common.GeneratedFile;
import org.drools.codegen.common.GeneratedFileType;
@@ -107,10 +108,9 @@ public class KogitoAssetsProcessor {
@BuildStep
public KogitoBuildContextBuildItem
generateKogitoBuildContext(List<KogitoBuildContextAttributeBuildItem>
attributes) {
// configure the application generator
- PathCollection rootPaths = getRootPaths(root.getResolvedPaths());
+ PathCollection rootPaths = getRootPaths(root.getResolvedPaths(),
AppPaths.BT);
KogitoBuildContext context =
- kogitoBuildContext(outputTargetBuildItem.getOutputDirectory(),
- rootPaths,
+ kogitoBuildContext(rootPaths,
combinedIndexBuildItem.getIndex(),
curateOutcomeBuildItem.getApplicationModel().getAppArtifact());
attributes.forEach(attribute ->
context.addContextAttribute(attribute.getName(), attribute.getValue()));
@@ -218,26 +218,26 @@ public class KogitoAssetsProcessor {
return new
EfestoGeneratedClassBuildItem(kogitoGeneratedSourcesBuildItem.getGeneratedFiles());
}
- static PathCollection getRootPaths(PathCollection resolvedPaths) {
- AtomicReference<PathCollection> toReturnRef = new
AtomicReference<>(resolvedPaths);
- if (resolvedPaths.stream().noneMatch(path ->
path.endsWith(File.separator + "generated-resources"))) {
- Optional<Path> optClassesPath =
- resolvedPaths.stream().filter(path -> {
- String fullPath = path.toString();
- String dir =
fullPath.substring(fullPath.lastIndexOf(File.separator) + 1);
- return dir.equals("classes");
- }).findFirst();
- optClassesPath.ifPresent(classesPath -> {
- Path toAdd =
Path.of(classesPath.toString().replace(File.separator + "classes",
- File.separator +
- "generated" +
- "-resources"));
- List<Path> prevPaths =
toReturnRef.get().stream().collect(Collectors.toList());
- prevPaths.add(toAdd);
- toReturnRef.set(PathList.from(prevPaths));
- });
+ static PathCollection getRootPaths(PathCollection resolvedPaths,
AppPaths.BuildTool bt) {
+ // Needed hack because during MAVEN build, resolvedPaths point to root
of project,
+ // while during GRADLE build, resolved paths contains
{root_project}/build/classes/java/main and
+ // {root_project}/build/resources/main
+ switch (bt) {
+ case GRADLE -> {
+ AtomicReference<PathCollection> toReturnRef = new
AtomicReference<>(resolvedPaths);
+ Optional<Path> optClassesPath =
+ resolvedPaths.stream().filter(path -> {
+ String fullPath = path.toString();
+ String lookingFor =
"build/classes/java/main".replace("/", File.separator);
+ return fullPath.endsWith(lookingFor);
+ }).findFirst();
+ optClassesPath.ifPresent(classesPath ->
toReturnRef.set(PathList.of(classesPath)));
+ return toReturnRef.get();
+ }
+ default -> {
+ return resolvedPaths;
+ }
}
- return toReturnRef.get();
}
private Collection<GeneratedFile>
collectGeneratedFiles(KogitoGeneratedSourcesBuildItem sources,
List<KogitoAddonsPreGeneratedSourcesBuildItem> preSources,
diff --git
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusResourceUtils.java
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusResourceUtils.java
index 3b10caeaa9..6a83445f27 100644
---
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusResourceUtils.java
+++
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/main/java/org/kie/kogito/quarkus/common/deployment/KogitoQuarkusResourceUtils.java
@@ -34,6 +34,7 @@ import org.drools.codegen.common.AppPaths;
import org.drools.codegen.common.DroolsModelBuildContext;
import org.drools.codegen.common.GeneratedFile;
import org.drools.codegen.common.GeneratedFileType;
+import org.drools.codegen.common.GeneratedFileWriter;
import org.drools.quarkus.util.deployment.QuarkusAppPaths;
import org.drools.util.PortablePath;
import org.eclipse.microprofile.config.ConfigProvider;
@@ -44,7 +45,6 @@ import org.kie.kogito.KogitoGAV;
import org.kie.kogito.codegen.api.SourceFileCodegenBindNotifier;
import org.kie.kogito.codegen.api.context.KogitoBuildContext;
import org.kie.kogito.codegen.api.context.impl.QuarkusKogitoBuildContext;
-import org.kie.kogito.codegen.core.utils.GeneratedFileWriter;
import org.kie.memorycompiler.resources.ResourceReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,16 +76,11 @@ public class KogitoQuarkusResourceUtils {
// since quarkus-maven-plugin is later phase of maven-resources-plugin,
// need to manually late-provide the resource in the expected location for
quarkus:dev phase --so not: writeGeneratedFile( f, resourcePath )
- private static final GeneratedFileWriter.Builder
generatedFileWriterBuilder =
- new GeneratedFileWriter.Builder(
- "target/classes",
- System.getProperty("kogito.codegen.sources.directory",
"target/generated-sources/kogito/"),
- System.getProperty("kogito.codegen.resources.directory",
"target/generated-resources/kogito/"),
- "target/generated-sources/kogito/");
-
- public static KogitoBuildContext kogitoBuildContext(Path outputTarget,
Iterable<Path> paths, IndexView index, Dependency appArtifact) {
+ private static final GeneratedFileWriter.Builder
generatedFileWriterBuilder = GeneratedFileWriter.builder("kogito",
"kogito.codegen.resources.directory", "kogito.codegen.sources.directory");
+
+ public static KogitoBuildContext kogitoBuildContext(Iterable<Path> paths,
IndexView index, Dependency appArtifact) {
// scan and parse paths
- AppPaths appPaths = QuarkusAppPaths.from(outputTarget, paths,
AppPaths.BuildTool.findBuildTool());
+ AppPaths appPaths = QuarkusAppPaths.from(paths);
ClassLoader classLoader =
Thread.currentThread().getContextClassLoader();
KogitoBuildContext context = QuarkusKogitoBuildContext.builder()
.withApplicationPropertyProvider(new
KogitoQuarkusApplicationPropertiesProvider())
@@ -111,9 +106,7 @@ public class KogitoQuarkusResourceUtils {
private static Predicate<Class<?>>
classSubTypeAvailabilityResolver(IndexView index) {
return clazz ->
index.getAllKnownImplementors(DotName.createSimple(clazz.getCanonicalName()))
.stream()
- .filter(c -> !Modifier.isInterface(c.flags()) &&
!Modifier.isAbstract(c.flags()))
- .findFirst()
- .isPresent();
+ .anyMatch(c -> !Modifier.isInterface(c.flags()) &&
!Modifier.isAbstract(c.flags()));
}
/**
diff --git
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/test/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessorTest.java
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/test/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessorTest.java
index f641e28af9..fd7483bb67 100644
---
a/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/test/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessorTest.java
+++
b/quarkus/extensions/kogito-quarkus-extension-common/kogito-quarkus-common-deployment/src/test/java/org/kie/kogito/quarkus/common/deployment/KogitoAssetsProcessorTest.java
@@ -22,7 +22,9 @@ import java.io.File;
import java.nio.file.Path;
import java.util.Arrays;
-import org.junit.jupiter.api.Test;
+import org.drools.codegen.common.AppPaths;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
import io.quarkus.bootstrap.model.PathsCollection;
import io.quarkus.paths.PathCollection;
@@ -32,34 +34,45 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
class KogitoAssetsProcessorTest {
- @Test
- void getRootPathsWithoutClasses() {
+ @ParameterizedTest
+ @ValueSource(booleans = { true, false })
+ void getRootPathsWithoutClasses(boolean withGradle) {
String projectDirPath = "projectDir";
- String outputTargetPath = "outputTarget";
Path projectDir = Path.of(projectDirPath);
- Path outputTarget = Path.of(outputTargetPath);
+ AppPaths.BuildTool bt;
+ if (withGradle) {
+ bt = AppPaths.BuildTool.GRADLE;
+ } else {
+ bt = AppPaths.BuildTool.MAVEN;
+ }
+ Path outputTarget = Path.of(bt.OUTPUT_DIRECTORY);
Iterable<Path> paths = Arrays.asList(projectDir, outputTarget);
-
PathCollection resolvedPaths = PathsCollection.from(paths);
- PathCollection retrieved =
KogitoAssetsProcessor.getRootPaths(resolvedPaths);
+ PathCollection retrieved =
KogitoAssetsProcessor.getRootPaths(resolvedPaths, bt);
assertEquals(resolvedPaths.size(), retrieved.size());
paths.forEach(expected -> assertTrue(retrieved.contains(expected)));
}
- @Test
- void getRootPathsWithClasses() {
+ @ParameterizedTest
+ @ValueSource(booleans = { true, false })
+ void getRootPathsWithClasses(boolean withGradle) {
String projectDirPath = "projectDir";
- String outputTargetPath = "outputTarget";
- String outputTargetPathClasses = String.format("%s/%s/classes",
projectDirPath, outputTargetPath).replace("/", File.separator);
+ AppPaths.BuildTool bt;
+ if (withGradle) {
+ bt = AppPaths.BuildTool.GRADLE;
+ } else {
+ bt = AppPaths.BuildTool.MAVEN;
+ }
+ String outputTargetPathClasses = String.format("%s/%s",
projectDirPath, bt.CLASSES_PATH.toString()).replace("./", "").replace("/",
File.separator);
Path projectDir = Path.of(projectDirPath);
Path outputTarget = Path.of(outputTargetPathClasses);
Iterable<Path> paths = Arrays.asList(projectDir, outputTarget);
PathCollection resolvedPaths = PathsCollection.from(paths);
- PathCollection retrieved =
KogitoAssetsProcessor.getRootPaths(resolvedPaths);
- assertEquals(resolvedPaths.size() + 1, retrieved.size());
- paths.forEach(expected -> assertTrue(retrieved.contains(expected)));
- String expectedPath = String.format("%s/%s/generated-resources",
projectDirPath, outputTargetPath).replace("/", File.separator);
+ PathCollection retrieved =
KogitoAssetsProcessor.getRootPaths(resolvedPaths, bt);
+ int expectedSize = withGradle ? 1 : resolvedPaths.size();
+ assertEquals(expectedSize, retrieved.size());
+ String expectedPath = String.format("%s/%s", projectDirPath,
bt.CLASSES_PATH).replace("/", File.separator);
assertTrue(retrieved.contains(Path.of(expectedPath)));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]