apupier commented on code in PR #7993:
URL: https://github.com/apache/camel-quarkus/pull/7993#discussion_r2546500538


##########
docs/modules/ROOT/pages/migration-guide/camel-spring-boot-to-camel-quarkus.adoc:
##########
@@ -0,0 +1,105 @@
+= Camel Spring Boot to Camel Quarkus Migration Guide
+
+This guide helps to migrate from Camel on Spring Boot to Camel on Quarkus.
+
+== Spring Boot to Quarkus non-specific to Camel migration
+
+This part should be relatively minimal for Camel applications. Most of it is 
automated by an 
https://docs.openrewrite.org/recipes/quarkus/spring/springboottoquarkus[OpenRewrite
 recipe].
+
+The command to apply it is
+
+[source,shell]
+---
+mvn -U org.openrewrite.maven:rewrite-maven-plugin:run 
-Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-spring-to-quarkus:RELEASE
 -Drewrite.activeRecipes=org.openrewrite.quarkus.spring.SpringBootToQuarkus 
-Drewrite.exportDatatables=true 
+---
+
+== Maven dependencies
+
+=== Bom dependencies
+
+The `org.apache.camel.springboot:camel-spring-boot-bom` must be replaced by 
`org.apache.camel.quarkus:camel-quarkus-bom`.
+
+The `org.springframework.boot:spring-boot-dependencies` should have been 
replaced by `io.quarkus.platform:quarkus-bom` by the OpenRewrite recipe.
+
+Take care of the versions, in Spring Boot the camel bom version is aligned to 
Camel version, the bom for Camel Quarkus is aligned with Quarkus version.
+
+=== Core dependencies
+
+* Remove parent `spring-boot-starter-parent`
+* Remove `spring-boot-starter-actuator` dependency
+* Replace `org.apache.camel.springboot:camel-spring-boot-starter` by 
`org.apache.camel.quarkus:camel-quarkus-core`
+
+=== Camel component dependency
+
+* Replace `org.apache.camel.springboot:camel-xxx-starter` by 
`org.apache.camel.quarkus:camel-quarkus-xxx`
+* Some dependencies must be added if component is used as they were provided 
by default with Camel Spring Boot, for instance camel-quarkus-timer
+* Note that few components are not available in Camel Quarkus (mainly the 
Spring specific ones)
+
+== Remove "Main" annotated class
+
+If OpenRewirte recipe used, it will have the @QuarkusMain annotation, 
otherwise the @SpringBootApplication. This class can be completely removed. if 
not removed, the application will start but won't discover and start the Camel 
routes.
+
+== Configure Quarkus Maven Plugin
+
+The OpenRewrite recipe should have added the quarkus-maven-plugin but we need 
to add some configuration like this:
+
+[source,xml]
+---
+<plugin> 
+  <groupId>${quarkus.platform.group-id}</groupId>
+  <artifactId>quarkus-maven-plugin</artifactId>
+  <version>${quarkus.platform.version}</version>
+  <extensions>true</extensions>
+  <executions>
+    <execution>
+      <goals>
+        <goal>build</goal>
+        <goal>generate-code</goal>
+        <goal>generate-code-tests</goal>
+     </goals>
+   </execution>
+  </executions>
+</plugin>
+---
+
+== Camel route DSLs
+
+There are no change for Java, Yaml and XML IO DSL.
+
+In case, the Camel Spring XML DSL was used, it needs to be migrated. Please 
see https://camel.apache.org/components/next/others/java-xml-io-dsl.html[Camel 
XML IO DSL documentation]
+
+== Automated tests
+
+Tests annotated with `@CamelSpringBootTest`, `@CamelSpringTest` and 
`@SpringBootTest` must used `@QuarkusTest` instead.
+
+In case of tests which extends `CamelSpringBootTestSupport`, it must be 
replaced by `CamelQuarkusTestsSupport` from `camel-quarkus-junit5` dependency 
(to add to the pom). Note that this solution is working only for JVM mode.
+
+As a reminder and in case of specific cases, see 
https://camel.apache.org/camel-quarkus/next/user-guide/testing.html[Camel 
Quarkus Testing User guide].
+
+== Properties
+
+In code base, the injected Spring properties should have been replaced by the 
OpenRewrite recipe already. (`@Value` by `@ConfigProperty`).
+
+The system of profiles are relatively similar. You can check the 
https://quarkus.io/guides/config-reference#profiles[Quarkus profile 
documentation] if you have very specific cases.
+
+The property `camel.main.run-controller=true` can be removed.
+
+Some properties for dev profile can be removed when a Quarkus dev service is 
available and you can use it out of the box. For instance with Kafka, 
`%dev.camel.component.kafka.brokers` property can be removed.
+
+== Transaction manager
+
+This is a large topic on both side. There will surely need to adjust it. 
Please check the following documentation to find your specific case:
+
+* 
https://docs.redhat.com/en/documentation/red_hat_build_of_apache_camel/4.14/html/red_hat_build_of_apache_camel_for_quarkus_reference/ass-ceq-jta-transaction-guide[Camel
 Quarkus transaction guide for Red Hat product]
+* https://quarkus.io/guides/transaction[Quarkus transaction guide]
+* 
https://camel.apache.org/components/next/eips/transactional-client.html[Camel 
transaction guide which is focused on Spring]

Review Comment:
   iI think I need to use an xref here



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to