[
https://issues.apache.org/jira/browse/CAMEL-24727?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18134867#comment-18134867
]
Aurélien Pupier commented on CAMEL-24727:
-----------------------------------------
the test is dependent on order of one parameter, on Jenkins CI:
{noformat}
org.opentest4j.AssertionFailedError:
[mixed.export.txt (run with -Dcamel.golden.update=true to update)]
expected:
"# run settings
camel.main.modeline=true
camel.jbang.lazyBean=true
camel.jbang.compileWorkDir=.camel-jbang/compile
camel.jbang.download=true
camel.jbang.fresh=false
camel.jbang.health=false
camel.jbang.metrics=false
camel.jbang.console=false
camel.jbang.mcp=false
camel.jbang.openapiUi=false
camel.jbang.verbose=false
camel.jbang.camel-version=${camel.version}
camel.jbang.springBootVersion=${spring-boot.version}
camel.jbang.quarkusGroupId=io.quarkus.platform
camel.jbang.quarkusVersion=3.35.3
camel.jbang.quarkusExtensionRegistryBaseUri=file\://${basedir}/target/test-classes/registry.quarkus.io
camel.jbang.javaVersion=21
camel.jbang.kameletsVersion=${kamelets.version}
camel.main.name=mixed
camel.main.routesIncludePattern=file\:src/test/resources/golden/mixed/Greeter.java,file\:src/test/resources/golden/mixed/route.camel.yaml
camel.jbang.classpathFiles=src/test/resources/golden/mixed/README.md,src/test/resources/golden/mixed/data.json
camel.jbang.readmeFiles=src/test/resources/golden/mixed/README.md
camel.jbang.scriptFiles=src/test/resources/golden/mixed/setup.sh
camel.jbang.tlsFiles=src/test/resources/golden/mixed/server.crt
camel.jbang.jkubeFiles=src/test/resources/golden/mixed/deployment.jkube.yaml
camel.component.properties.location=file\:src/test/resources/golden/mixed/application.properties
camel.jbang.dependencies=camel\:jackson
dependency=mvn\:org.apache.camel\:camel-jackson\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-kamelet\:${camel.version}
dependency=mvn\:org.apache.camel.kamelets\:camel-kamelets\:${kamelets.version}
dependency=mvn\:org.apache.camel\:camel-java-joor-dsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-endpointdsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-yaml-dsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-timer\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-bean\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-log\:${camel.version}
# project files
.mvn/wrapper/maven-wrapper.jar
.mvn/wrapper/maven-wrapper.properties
AGENTS.md
mvnw
mvnw.cmd
pom.xml
readme.md
src/main/docker/Dockerfile
src/main/java/org/example/golden/mixed/CamelApplication.java
src/main/java/org/example/golden/mixed/Greeter.java
src/main/jkube/src/test/resources/golden/mixed/deployment.yaml
src/main/resources/README.md
src/main/resources/application.properties
src/main/resources/camel/route.camel.yaml
src/main/resources/data.json
src/main/resources/log4j2.component.properties
src/main/resources/log4j2.properties
src/main/scripts/setup.sh
src/main/tls/server.crt
# pom.xml
org.example.golden:mixed:1.0.0
properties: [java.version, project.build.outputTimestamp]
dependency org.apache.camel:camel-main
dependency org.apache.camel:camel-bean
dependency org.apache.camel:camel-jackson
dependency org.apache.camel:camel-log
dependency org.apache.camel:camel-timer
dependency org.apache.camel:camel-yaml-dsl
dependency org.fusesource.jansi:jansi
dependency org.apache.logging.log4j:log4j-api
dependency org.apache.logging.log4j:log4j-slf4j2-impl
dependency org.apache.logging.log4j:log4j-core
dependency org.apache.camel:camel-test-junit6 (test)
repository https://repository.apache.org/content/groups/snapshots/
plugin org.apache.maven.plugins:maven-compiler-plugin
plugin org.apache.camel:camel-maven-plugin
plugin org.apache.maven.plugins:maven-jar-plugin
plugin org.apache.maven.plugins:maven-dependency-plugin
plugin org.apache.camel:camel-repackager-maven-plugin
# application.properties
camel.main.name=mixed
greeting=hello
camel.main.basePackageScan=org.example.golden.mixed
"
but was:
"# run settings
camel.main.modeline=true
camel.jbang.lazyBean=true
camel.jbang.compileWorkDir=.camel-jbang/compile
camel.jbang.download=true
camel.jbang.fresh=false
camel.jbang.health=false
camel.jbang.metrics=false
camel.jbang.console=false
camel.jbang.mcp=false
camel.jbang.openapiUi=false
camel.jbang.verbose=false
camel.jbang.camel-version=${camel.version}
camel.jbang.springBootVersion=${spring-boot.version}
camel.jbang.quarkusGroupId=io.quarkus.platform
camel.jbang.quarkusVersion=3.35.3
camel.jbang.quarkusExtensionRegistryBaseUri=file\://${basedir}/target/test-classes/registry.quarkus.io
camel.jbang.javaVersion=21
camel.jbang.kameletsVersion=${kamelets.version}
camel.main.name=mixed
camel.main.routesIncludePattern=file\:src/test/resources/golden/mixed/route.camel.yaml,file\:src/test/resources/golden/mixed/Greeter.java
camel.jbang.classpathFiles=src/test/resources/golden/mixed/README.md,src/test/resources/golden/mixed/data.json
camel.jbang.readmeFiles=src/test/resources/golden/mixed/README.md
camel.jbang.scriptFiles=src/test/resources/golden/mixed/setup.sh
camel.jbang.tlsFiles=src/test/resources/golden/mixed/server.crt
camel.jbang.jkubeFiles=src/test/resources/golden/mixed/deployment.jkube.yaml
camel.component.properties.location=file\:src/test/resources/golden/mixed/application.properties
camel.jbang.dependencies=camel\:jackson
dependency=mvn\:org.apache.camel\:camel-jackson\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-kamelet\:${camel.version}
dependency=mvn\:org.apache.camel.kamelets\:camel-kamelets\:${kamelets.version}
dependency=mvn\:org.apache.camel\:camel-java-joor-dsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-endpointdsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-yaml-dsl\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-timer\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-bean\:${camel.version}
dependency=mvn\:org.apache.camel\:camel-log\:${camel.version}
# project files
.mvn/wrapper/maven-wrapper.jar
.mvn/wrapper/maven-wrapper.properties
AGENTS.md
mvnw
mvnw.cmd
pom.xml
readme.md
src/main/docker/Dockerfile
src/main/java/org/example/golden/mixed/CamelApplication.java
src/main/java/org/example/golden/mixed/Greeter.java
src/main/jkube/src/test/resources/golden/mixed/deployment.yaml
src/main/resources/README.md
src/main/resources/application.properties
src/main/resources/camel/route.camel.yaml
src/main/resources/data.json
src/main/resources/log4j2.component.properties
src/main/resources/log4j2.properties
src/main/scripts/setup.sh
src/main/tls/server.crt
# pom.xml
org.example.golden:mixed:1.0.0
properties: [java.version, project.build.outputTimestamp]
dependency org.apache.camel:camel-main
dependency org.apache.camel:camel-bean
dependency org.apache.camel:camel-jackson
dependency org.apache.camel:camel-log
dependency org.apache.camel:camel-timer
dependency org.apache.camel:camel-yaml-dsl
dependency org.fusesource.jansi:jansi
dependency org.apache.logging.log4j:log4j-api
dependency org.apache.logging.log4j:log4j-slf4j2-impl
dependency org.apache.logging.log4j:log4j-core
dependency org.apache.camel:camel-test-junit6 (test)
repository https://repository.apache.org/content/groups/snapshots/
plugin org.apache.maven.plugins:maven-compiler-plugin
plugin org.apache.camel:camel-maven-plugin
plugin org.apache.maven.plugins:maven-jar-plugin
plugin org.apache.maven.plugins:maven-dependency-plugin
plugin org.apache.camel:camel-repackager-maven-plugin
# application.properties
camel.main.name=mixed
greeting=hello
camel.main.basePackageScan=org.example.golden.mixed
"
at
org.apache.camel.dsl.jbang.core.commands.RunExportGoldenTest.verify(RunExportGoldenTest.java:496)
at
org.apache.camel.dsl.jbang.core.commands.RunExportGoldenTest.export(RunExportGoldenTest.java:174)
{noformat}
the diff is on these lines:
camel.main.routesIncludePattern=file\:src/test/resources/golden/mixed/Greeter.java,file\:src/test/resources/golden/mixed/route.camel.yaml
camel.main.routesIncludePattern=file\:src/test/resources/golden/mixed/route.camel.yaml,file\:src/test/resources/golden/mixed/Greeter.java
> camel-jbang: stage 1 - extract camel-jbang-export module
> --------------------------------------------------------
>
> Key: CAMEL-24727
> URL: https://issues.apache.org/jira/browse/CAMEL-24727
> Project: Camel
> Issue Type: Sub-task
> Components: camel-jbang
> Reporter: Ricardo Martinez
> Assignee: Claus Ibsen
> Priority: Trivial
> Fix For: 4.24.0
>
>
> h2. Motivation
> The only Java API to export a Camel integration to a Maven project is
> {{camel-jbang-core}}, i.e. the Camel CLI itself. Every consumer therefore
> depends on picocli, jline and ~3500 lines of Run.
> This stage moves the export machinery into a picocli-free library module so
> that consumers like Kaoto and the Camel TUI can create and run exported
> projects through a pure Java API.
> h2. What changes
> New module {{dsl/camel-jbang/camel-jbang-export}} (package
> {{org.apache.camel.dsl.jbang.export}}).
> Dependencies: camel-kamelet-main, camel-tooling-maven, camel-catalog,
> freemarker, plexus-xml, snakeyaml. No picocli, no jline.
> Key relocated / new types:
> || Today (camel-jbang-core) || Moves to camel-jbang-export ||
> | ExportBaseCommand option fields | {{ExportRequest}} — plain mutable config |
> | ExportBaseCommand logic (resolveDependencies, copySourceFiles,
> copyMavenWrapper, ...) | {{Exporter}} abstract class, same protected hook
> names |
> | ExportCamelMain, ExportQuarkus, ExportSpringBoot (package-private) |
> {{CamelMainExporter}}, {{QuarkusExporter}}, {{SpringBootExporter}} (public) |
> | Export.doExport() runtime switch | {{ProjectExporter}} facade: {{int
> export(ExportRequest)}} |
> | ExportBaseCommand.runSilently(), Run exportRun branch, RunDownloadListener,
> writeSettings | {{SilentRun}} + {{RunSettings}} |
> | ExportHelper, RunHelper pom half, TemplateHelper, VersionHelper,
> QuarkusHelper, RuntimeUtil, PathUtils, XmlHelper, and others | move as-is
> (already picocli-free) |
> | RuntimeType, CamelJBangConstants, PluginExporter, Printer, Source,
> SourceScheme, SourceHelper | move; consumers rewrite imports |
> | pom.ftl templates, Dockerfiles, readme templates, run-java.sh,
> maven-wrapper/, camel-wrapper/ | move |
> {{Export}} and {{ExportBaseCommand}} stay in {{camel-jbang-core}} as picocli
> delegates until stage 6. {{camel-jbang-runner}} dependency flips from
> {{camel-jbang-core}} to {{camel-jbang-export}}.
> {{Run}} loses the exportRun branch, RunDownloadListener, writeSettings and
> the bodies of the three run<Runtime> methods (~700 lines); they become calls
> to ProjectExporter and ProjectRunner.
> Add the module to {{dsl/camel-jbang/pom.xml}}, {{bom/camel-bom}} and the
> camel-package-maven-plugin config. Move export-related tests (ExportTest,
> ExportHelperTest, RuntimeTypeTest) to the new module.
> h2. Compatibility
> * Package change for RuntimeType, Printer, PluginExporter,
> CamelJBangConstants, SourceScheme, ExportHelper — in-tree consumers rewrite
> imports in the same PR; out-of-tree camel-jbang plugins need the same import
> rewrite. Document in the 4.x upgrade guide.
> * {{.camel-jbang/camel-jbang-run.properties}} path and keys are preserved.
> * No CLI option added, removed or renamed.
> h2. Note
> After this stage a consumer of {{camel-jbang-export}} or
> {{camel-jbang-runner}} no longer carries picocli or jline. camel-kamelet-main
> is still a mandatory compile dependency of
> {{camel-jbang-export}} (resolved in stage 7).
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)