64.2. コンパイル
csimple 言語は、通常の Java ソースコードに解析され、他のすべてのソースコードと一緒にコンパイルされるか、camel-csimple-joor
モジュールを介してブートストラップ中に 1 回コンパイルすることもできます。
csimple をコンパイルするには 2 つの方法があります
-
ビルド時に
camel-csimple-maven-plugin
生成ソースコードを使用します。 -
Camel のブートストラップ中にランタイムインメモリーコンパイルを行う
camel-csimple-joor
を使用します。
64.2.1. camel-csimple-maven-plugin の使用
camel-csimple-maven-plugin
Maven プラグインは、ソースコードからすべての csimple スクリプトを検出するために使用され、src/generated/java
フォルダーにソースコードが自動生成され、他のすべてのソースと共にコンパイルされます。
Maven プラグインは、.java
および .xml
ファイル (Java および XML DSL) のソースコードスキャンを実行します。スキャナーは特定のコードパターンの検出に制限をかけており、csimple スクリプトが異常または、まれな方法で使用されている場合に、csimple スクリプトの一部を検出できない可能性があります。
camel-csimple-joor
を使用したランタイムコンパイルには、この制限はありません。
利点として、すべての csimple スクリプトが通常の Java コンパイラーを使用してコンパイルされるため、すべてがアプリケーションの JAR ファイルに .class
ファイルとしてそのまま含まれており、実行時に追加の依存関係が必要ないことが挙げられます。
camel-csimple-maven-plugin
を使用するには、次のように pom.xml
ファイルに追加する必要があります。
<plugins> <!-- generate source code for csimple languages --> <plugin> <groupId>org.apache.camel</groupId> <artifactId>camel-csimple-maven-plugin</artifactId> <version>${camel.version}</version> <executions> <execution> <id>generate</id> <goals> <goal>generate</goal> </goals> </execution> </executions> </plugin> <!-- include source code generated to maven sources paths --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>3.1.0</version> <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> </plugins>
そして、build-helper-maven-plugin
Maven プラグインを追加して、src/generated
を Java コンパイラーのソースフォルダーのリストに追加して、生成されたソースコードがコンパイルされ、アプリケーション JAR ファイルに含まれるようにする必要があります。
Maven プラグインを使用する Camel Examples の camel-example-csimple の
例を参照してください。
64.2.2. camel-csimple-joor の使用
jOOR ライブラリーは Java コンパイラーと統合され、Java コードのランタイムコンパイルを実行します。
camel-simple-joor
を使用するときにサポートされるランタイムは、Java スタンドアロン、Spring Boot、Camel Quarkus、およびその他のマイクロサービスランタイムを対象としています。OSGi、Camel Karaf、またはあらゆる種類の Java Application Server ランタイムではサポートされていません。
jOOR は、ファット jar パッケージ (https://github.com/jOOQ/jOOR/issues/69) を使用した Spring Boot でのランタイムコンパイルをサポートしていません。展開形式のクラスパスで動作します。
camel-simple-joor
を使用するには、依存関係としてクラスパスに追加するだけです。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-csimple-joor</artifactId> <version>{CamelSBProjectVersion}</version> </dependency>
pom.xml
ファイルに Maven プラグインを追加する必要はありません。
jOOR コンパイラーを使用する Camel Examples の camel-example-csimple-joor
の例を参照してください。