diff --git a/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java b/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
deleted file mode 100644
index d90d52b635c3..000000000000
--- a/extensions-jvm/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
+++ /dev/null
@@ -1,46 +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.apache.camel.quarkus.component.beanio.deployment;
-
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.annotations.ExecutionTime;
-import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
-import io.quarkus.deployment.pkg.steps.NativeBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
-import org.jboss.logging.Logger;
-
-class BeanioProcessor {
-
- private static final Logger LOG = Logger.getLogger(BeanioProcessor.class);
- private static final String FEATURE = "camel-beanio";
-
- @BuildStep
- FeatureBuildItem feature() {
- return new FeatureBuildItem(FEATURE);
- }
-
- /**
- * Remove this once this extension starts supporting the native mode.
- */
- @BuildStep(onlyIf = NativeBuild.class)
- @Record(value = ExecutionTime.RUNTIME_INIT)
- void warnJvmInNative(JvmOnlyRecorder recorder) {
- JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time
- recorder.warnJvmInNative(FEATURE); // warn at runtime
- }
-}
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index de1499bb1830..77d25c39fdd0 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -43,7 +43,6 @@
azure-servicebus
azure-storage-datalake
barcode
- beanio
bonita
chatscript
chunk
diff --git a/extensions-jvm/beanio/deployment/pom.xml b/extensions/beanio/deployment/pom.xml
similarity index 93%
rename from extensions-jvm/beanio/deployment/pom.xml
rename to extensions/beanio/deployment/pom.xml
index 457596ecd6cc..b2fea85a44d2 100644
--- a/extensions-jvm/beanio/deployment/pom.xml
+++ b/extensions/beanio/deployment/pom.xml
@@ -30,6 +30,10 @@
Camel Quarkus :: BeanIO :: Deployment
+
+ org.apache.camel.quarkus
+ camel-quarkus-xml-jaxp-deployment
+
org.apache.camel.quarkus
camel-quarkus-core-deployment
diff --git a/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
new file mode 100644
index 000000000000..5ff8aac1b0fc
--- /dev/null
+++ b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java
@@ -0,0 +1,137 @@
+/*
+ * 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.apache.camel.quarkus.component.beanio.deployment;
+
+import java.io.IOException;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBundleBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.beanio.BeanReaderErrorHandler;
+import org.beanio.annotation.Record;
+import org.beanio.stream.RecordParserFactory;
+import org.jboss.jandex.AnnotationInstance;
+import org.jboss.jandex.AnnotationTarget;
+import org.jboss.jandex.AnnotationTarget.Kind;
+import org.jboss.jandex.ClassInfo;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
+
+class BeanioProcessor {
+ private static final String FEATURE = "camel-beanio";
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+
+ @BuildStep
+ IndexDependencyBuildItem indexDependencies() {
+ return new IndexDependencyBuildItem("com.github.beanio", "beanio");
+ }
+
+ @BuildStep
+ BeanioPropertiesBuildItem beanioProperties() {
+ try {
+ Properties properties = new Properties();
+ properties.load(Thread.currentThread().getContextClassLoader()
+ .getResourceAsStream("org/beanio/internal/config/beanio.properties"));
+ return new BeanioPropertiesBuildItem(properties);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @BuildStep
+ void nativeImageResources(BuildProducer nativeImageResource) {
+ nativeImageResource.produce(new NativeImageResourceBuildItem("org/beanio/internal/config/beanio.properties"));
+ nativeImageResource.produce(new NativeImageResourceBuildItem("beanio.properties"));
+ }
+
+ @BuildStep
+ void registerForReflection(
+ BeanioPropertiesBuildItem beanioProperties,
+ CombinedIndexBuildItem combinedIndex,
+ BuildProducer reflectiveClass) {
+ Properties properties = beanioProperties.getProperties();
+
+ Set handlersAndFactories = properties.keySet()
+ .stream()
+ .filter(key -> key.toString().contains("Factory") || key.toString().contains("Handler"))
+ .map(properties::get)
+ .map(Object::toString)
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass.produce(ReflectiveClassBuildItem.builder(handlersAndFactories.toArray(new String[0])).build());
+
+ IndexView index = combinedIndex.getIndex();
+ Set recordParsers = index.getAllKnownImplementors(RecordParserFactory.class)
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass.produce(ReflectiveClassBuildItem.builder(recordParsers.toArray(new String[0])).methods(true).build());
+
+ Set parserConfiguration = index.getKnownClasses()
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .filter(name -> name.startsWith("org.beanio") && name.endsWith("ParserConfiguration"))
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass
+ .produce(ReflectiveClassBuildItem.builder(parserConfiguration.toArray(new String[0])).methods(true).build());
+
+ Set errorHandlers = index.getAllKnownImplementors(BeanReaderErrorHandler.class)
+ .stream()
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass.produce(ReflectiveClassBuildItem.builder(errorHandlers.toArray(new String[0])).build());
+
+ Set recordClasses = index.getAnnotations(Record.class)
+ .stream()
+ .map(AnnotationInstance::target)
+ .filter(target -> target.kind().equals(Kind.CLASS))
+ .map(AnnotationTarget::asClass)
+ .map(ClassInfo::name)
+ .map(DotName::toString)
+ .collect(Collectors.toUnmodifiableSet());
+ reflectiveClass
+ .produce(ReflectiveClassBuildItem.builder(recordClasses.toArray(new String[0])).fields(true).methods(true)
+ .build());
+ }
+
+ @BuildStep
+ void registerResourceBundles(BeanioPropertiesBuildItem beanioProperties,
+ BuildProducer nativeImageResourceBundle) {
+ Properties properties = beanioProperties.getProperties();
+ properties.keySet()
+ .stream()
+ .filter(key -> key.toString().endsWith(".messages"))
+ .map(properties::get)
+ .map(Object::toString)
+ .map(NativeImageResourceBundleBuildItem::new)
+ .forEach(nativeImageResourceBundle::produce);
+ }
+}
diff --git a/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java
new file mode 100644
index 000000000000..f3573a222ee4
--- /dev/null
+++ b/extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioPropertiesBuildItem.java
@@ -0,0 +1,17 @@
+package org.apache.camel.quarkus.component.beanio.deployment;
+
+import java.util.Properties;
+
+import io.quarkus.builder.item.SimpleBuildItem;
+
+public final class BeanioPropertiesBuildItem extends SimpleBuildItem {
+ private final Properties properties;
+
+ public BeanioPropertiesBuildItem(Properties properties) {
+ this.properties = properties;
+ }
+
+ public Properties getProperties() {
+ return properties;
+ }
+}
diff --git a/extensions-jvm/beanio/pom.xml b/extensions/beanio/pom.xml
similarity index 96%
rename from extensions-jvm/beanio/pom.xml
rename to extensions/beanio/pom.xml
index 37f7b21c75b6..8cdc326d489f 100644
--- a/extensions-jvm/beanio/pom.xml
+++ b/extensions/beanio/pom.xml
@@ -21,7 +21,7 @@
4.0.0
org.apache.camel.quarkus
- camel-quarkus-extensions-jvm
+ camel-quarkus-extensions
3.16.0-SNAPSHOT
../pom.xml
diff --git a/extensions-jvm/beanio/runtime/pom.xml b/extensions/beanio/runtime/pom.xml
similarity index 92%
rename from extensions-jvm/beanio/runtime/pom.xml
rename to extensions/beanio/runtime/pom.xml
index ba7c2058575e..79851fed9643 100644
--- a/extensions-jvm/beanio/runtime/pom.xml
+++ b/extensions/beanio/runtime/pom.xml
@@ -32,9 +32,14 @@
3.8.0
+ 3.16.0
+
+ org.apache.camel.quarkus
+ camel-quarkus-xml-jaxp
+
org.apache.camel.quarkus
camel-quarkus-core
diff --git a/extensions/beanio/runtime/src/main/doc/usage.adoc b/extensions/beanio/runtime/src/main/doc/usage.adoc
new file mode 100644
index 000000000000..ec95d1b8f79f
--- /dev/null
+++ b/extensions/beanio/runtime/src/main/doc/usage.adoc
@@ -0,0 +1,31 @@
+=== BeanIO in native mode
+
+==== XML mapping files
+
+When BeanIO configuration is defined in XML files that are read from the classpath.
+You must ensure each file is added to the native application image.
+To do this, add the `quarkus.native.resources.includes` configuration property to `application.properties`. For example.
+
+[source,properties]
+----
+quarkus.native.resources.includes=mapping.xml,model/other-mapping.xml
+----
+
+More information about selecting resources for inclusion in the native executable can be found at xref:user-guide/native-mode.adoc#embedding-resource-in-native-executable[Embedding resources in native executable].
+
+==== BeanIO Record classes
+
+All classes that participate in BeanIO marshal / unmarshal operations must be registered for reflection.
+
+This can be achieved with the `@RegisterForReflection`
+annotation or with configuration property `quarkus.camel.native.reflection.include-patterns`. For example:
+
+[source,java]
+----
+@RegisterForReflection
+public class Employee {
+ ...
+}
+----
+
+Refer to the xref:user-guide/native-mode.adoc#reflection[Native mode] user guide for more information.
diff --git a/extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 97%
rename from extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index aff76a2c0a38..60a4b519e2a8 100644
--- a/extensions-jvm/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++ b/extensions/beanio/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -26,9 +26,8 @@ description: "Marshal and unmarshal Java beans to and from flat files (such as C
metadata:
icon-url: "https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg"
sponsor: "Apache Software Foundation"
- unlisted: true
guide: "https://camel.apache.org/camel-quarkus/latest/reference/extensions/beanio.html"
categories:
- "integration"
status:
- - "preview"
+ - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 2cc68249b30e..188bd03aceac 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -69,6 +69,7 @@
base64
bean
bean-validator
+ beanio
bindy
box
braintree
diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml
index abdd819563c4..49293da311de 100644
--- a/integration-tests-jvm/pom.xml
+++ b/integration-tests-jvm/pom.xml
@@ -41,7 +41,6 @@
azure-servicebus
azure-storage-datalake
barcode
- beanio
bonita
chatscript
chunk
diff --git a/integration-tests-jvm/beanio/pom.xml b/integration-tests/beanio/pom.xml
similarity index 83%
rename from integration-tests-jvm/beanio/pom.xml
rename to integration-tests/beanio/pom.xml
index ed05ee369127..ddd11135240e 100644
--- a/integration-tests-jvm/beanio/pom.xml
+++ b/integration-tests/beanio/pom.xml
@@ -117,6 +117,33 @@
+
+ native
+
+
+ native
+
+
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-failsafe-plugin
+
+
+
+ integration-test
+ verify
+
+
+
+
+
+
+
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioResource.java
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/BeanioRoutes.java
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
similarity index 95%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
index b1d7bb7a91b7..15846a15cbbb 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/A1Record.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class A1Record extends AbstractRecord {
Double currentPrice;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
similarity index 95%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
index 668a7245d529..09c338741579 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/AbstractRecord.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public abstract class AbstractRecord {
String sedol;
String source;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
similarity index 95%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
index 051ea6306e51..46896c28a467 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/B1Record.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class B1Record extends AbstractRecord {
String securityName;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/CustomErrorHandler.java
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
similarity index 97%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
index f3bc71cc7c64..ca31047661d1 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Employee.java
@@ -18,6 +18,9 @@
import java.util.Date;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Employee {
private String firstName;
private String lastName;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/EmployeeAnnotated.java
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
similarity index 93%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
index 85afd0bf3113..459430173db9 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Error.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Error {
private final String record;
private final String message;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
similarity index 97%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
index 7e1d7c64da36..77580ffb056d 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Header.java
@@ -20,8 +20,10 @@
import java.util.HashMap;
import java.util.Map;
+import io.quarkus.runtime.annotations.RegisterForReflection;
import org.apache.camel.dataformat.beanio.BeanIOHeader;
+@RegisterForReflection
public class Header implements BeanIOHeader {
String identifier;
String recordType;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
similarity index 95%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
index 78626bbb646b..02f095ec29fe 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Separator.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Separator {
String value;
diff --git a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
similarity index 95%
rename from integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
rename to integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
index 219eb4554e7d..2ff5990f904d 100644
--- a/integration-tests-jvm/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
+++ b/integration-tests/beanio/src/main/java/org/apache/camel/quarkus/component/beanio/it/model/Trailer.java
@@ -16,6 +16,9 @@
*/
package org.apache.camel.quarkus.component.beanio.it.model;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+
+@RegisterForReflection
public class Trailer {
int numberOfRecords;
diff --git a/integration-tests/beanio/src/main/resources/application.properties b/integration-tests/beanio/src/main/resources/application.properties
new file mode 100644
index 000000000000..5610e20f5aae
--- /dev/null
+++ b/integration-tests/beanio/src/main/resources/application.properties
@@ -0,0 +1,17 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+quarkus.native.resources.includes=*mapping.xml
\ No newline at end of file
diff --git a/integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml b/integration-tests/beanio/src/main/resources/complex-mapping.xml
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/resources/complex-mapping.xml
rename to integration-tests/beanio/src/main/resources/complex-mapping.xml
diff --git a/integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml b/integration-tests/beanio/src/main/resources/employee-mapping.xml
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/resources/employee-mapping.xml
rename to integration-tests/beanio/src/main/resources/employee-mapping.xml
diff --git a/integration-tests-jvm/beanio/src/main/resources/single-object-mapping.xml b/integration-tests/beanio/src/main/resources/single-object-mapping.xml
similarity index 100%
rename from integration-tests-jvm/beanio/src/main/resources/single-object-mapping.xml
rename to integration-tests/beanio/src/main/resources/single-object-mapping.xml
diff --git a/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java
new file mode 100644
index 000000000000..9c92101408bc
--- /dev/null
+++ b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioIT.java
@@ -0,0 +1,24 @@
+/*
+ * 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.apache.camel.quarkus.component.beanio.it;
+
+import io.quarkus.test.junit.QuarkusIntegrationTest;
+
+@QuarkusIntegrationTest
+class BeanioIT extends BeanioTest {
+
+}
diff --git a/integration-tests-jvm/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java b/integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
rename to integration-tests/beanio/src/test/java/org/apache/camel/quarkus/component/beanio/it/BeanioTest.java
diff --git a/integration-tests-jvm/beanio/src/test/resources/complex-data.txt b/integration-tests/beanio/src/test/resources/complex-data.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/complex-data.txt
rename to integration-tests/beanio/src/test/resources/complex-data.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-csv.txt b/integration-tests/beanio/src/test/resources/employees-csv.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-csv.txt
rename to integration-tests/beanio/src/test/resources/employees-csv.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-delimited.txt b/integration-tests/beanio/src/test/resources/employees-delimited.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-delimited.txt
rename to integration-tests/beanio/src/test/resources/employees-delimited.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-fixedlength.txt b/integration-tests/beanio/src/test/resources/employees-fixedlength.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-fixedlength.txt
rename to integration-tests/beanio/src/test/resources/employees-fixedlength.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-with-error.txt b/integration-tests/beanio/src/test/resources/employees-with-error.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-with-error.txt
rename to integration-tests/beanio/src/test/resources/employees-with-error.txt
diff --git a/integration-tests-jvm/beanio/src/test/resources/employees-xml.txt b/integration-tests/beanio/src/test/resources/employees-xml.txt
similarity index 100%
rename from integration-tests-jvm/beanio/src/test/resources/employees-xml.txt
rename to integration-tests/beanio/src/test/resources/employees-xml.txt
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 658afa12798a..051a30e09d64 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -64,6 +64,7 @@
azure-grouped
base64
bean-validator
+ beanio
bindy
box
braintree
diff --git a/tooling/scripts/test-categories.yaml b/tooling/scripts/test-categories.yaml
index cee39642f0f8..957e75582ae2 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -204,6 +204,7 @@ group-11:
- xslt-saxon
group-12:
- aws2-grouped
+ - beanio
- csimple
- quartz-clustered
- knative