Camel 开发者控制台
Camel 组件 Maven 插件
登录后可跨设备保存划线和私人笔记登录
Camel Component Maven Plugin
Camel Component Maven Plugin 允许第三方组件开发者生成自 Camel 3.x 起配置所需的全部元数据与 Java 类。这些元数据文件和 Java 文件可以让您的组件运行更高效、更快速。
支持的目标
支持以下目标:
generate
该目标将生成以下元数据文件和 Java 文件:
- Jandex 索引:它会为项目中使用的 Java 注解生成 Jandex 索引,从而更高效地搜索和加载这些注解,以便生成下述的其他元数据。
- 类型转换器加载器(Type Converter Loader):它会为标注了
@Converter(loader = true)的类型转换器生成加载器,使 Camel 能够更快地加载这些转换器。 - SPI:它会为组件生成所有的服务提供者接口(SPI)。这样 Camel 无需将其手动添加到 Camel 上下文中即可自动发现您的组件。
- 配置器(Configurers):它会根据标注了
@Configurer的类生成所有的配置器 Java 类。 - Endpoint 模式(Endpoint Schema):它会生成属性配置器以及从组件的 Endpoint 类和 Component 类中提取的模式 JSON。这使 Camel 在配置属性时无需使用反射,从而获得更好的效率。
- Endpoint URI 工厂:它会生成用于从属性 Map 构建 URI 的端点工厂。
- Invoke on Header:它会为使用
@InvokeOnHeader的组件生成源代码。 - Prepare Component:它会分析 Maven 模块是否包含诸如
components、dataformats、languages等 Camel 模块,并为其中每一项生成额外的描述符和模式文件,以便在 Camel 和工具链中更轻松地自动发现。 - Validate Component:它会校验 Camel 组件中
components、dataformats、languages等的元文件是否都包含所需的元数据,例如分配的标签、每个选项的文档等。
为了使插件正常工作,你的组件中需要具备相应的 Camel 注解。例如组件类使用 @Component、端点类使用 @UriEndpoint、@UriParams 等。你可以在 GitHub 上现有的任意 Camel 组件中查看这些注解的使用方式。更好的做法是,使用 Camel Maven Archetypes 来初始化组件项目,它已经包含了组件所需的全部基础设施,例如必要的初始 Java 类、注解以及 Maven pom.xml。 |
|---|
将插件添加到你的 pom.xml 中
如果你没有使用 Camel Maven Archetypes 来初始化组件项目,则需要在 pom.xml 的构建(build)部分添加以下内容:
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-component-maven-plugin</artifactId>
<version>${camel-version}</version>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>这将把插件的 generate 目标绑定到 Maven 的 process-classes 阶段,以便在编译时生成上述所有必需的文件。
因此,mvn test、mvn package、mvn verify 和 mvn install 阶段都应该会运行该插件。
重新编译以包含最新生成的代码
camel-component-maven-plugin 在编译器之后执行,由于它输出的是 Java 源代码,因此编译器必须再次执行(仅当源代码确实发生变化时才会进行编译)。
为确保这一点,应在 pom.xml 文件中添加以下内容:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>recompile</id>
<goals>
<goal>compile</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>配置输出目录
该插件默认将输出生成到以下目录:
src/generated/java—— 用于生成的 Java 源代码src/generated/resources—— 用于生成的资源文件
若要让 Java 编译器包含这些文件夹,你可以配置 Maven 将这些目录纳入其中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
<goal>add-resource</goal>
</goals>
<configuration>
<sources>
<source>src/generated/java</source>
</sources>
<resources>
<resource>
<directory>src/generated/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>不过,如果需要,你也可以将 camel-component-maven-plugin 配置为直接输出到 src/main,如下所示(这样就不必像上面那样使用 build-helper-maven-plugin 了):
<plugin>
<groupId>org.apache.camel</groupId>
<artifactId>camel-component-maven-plugin</artifactId>
<version>${camel-version}</version>
<configuration>
<sourcesOutputDir>src/main/java</sourcesOutputDir>
<resourcesOutputDir>src/main/resources</resourcesOutputDir>
</configuration>
<executions>
<execution>
<id>generate</id>
<goals>
<goal>generate</goal>
</goals>
<phase>process-classes</phase>
</execution>
</executions>
</plugin>评论
登录后参与评论
正在加载评论…
KnowForge