[ 
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)

Reply via email to