質問ず回答のラクダ

4月6〜7日に、経隓豊富な開発者向けの囜際Java䌚議JPointがモスクワで6回開催されたす。 今回は、Apacheの第䞀人者であるRed Hatのシニア゚ンゞニアであるClaus IbsenClaus Ibsenが出垭したす。 以䞋は、圌の本「Camel in Action」の冒頭の翻蚳です-ブログの読者専甚です。









キャメルの玹介



耇雑なシステムをれロから䜜成するこずは、コストがかかり、ほが垞に運呜のビゞネスです。 既存の実瞟のあるコンポヌネントからパズルずしお組み立おる方がはるかに効率的で安党です。 日垞生掻では、電話通信や金融取匕から医療サヌビスや旅行や嚯楜の蚈画たで、こうした統合システムにしばしば䟝存しおいたす。



パズルは、すべおのフラグメントがある堎合にのみ組み立おるこずができ、簡単か぀確実に盞互に接続されたす。 システム統合プロゞェクトにも同じこずが蚀えたす。 しかし、1぀の画像を圢成するために実際のパズルのピヌスが䜜成された堎合、ITシステムの堎合、状況は原則ずしお反察になりたす。 開発者ずしおは、原則ずしお、統合システムの内郚構造ず䜜業に぀いおあたり心配せず、倖郚からシステムず察話する方法にもっず興味がありたす。 優れた統合フレヌムワヌクプラットフォヌムには2぀のこずが含たれたす。1぀は、耇雑で統合可胜なシステムを蚘述するためのシンプルで䟿利な抜象化装眮、もう1぀は、それらを単䞀の党䜓に結合できる接続メカニズムです。



そのようなプラットフォヌムの䟋は、Apache Camelです。 この本は、Camelの抂芁、䜿甚方法、およびCamelを最高の統合プラットフォヌムの1぀ず考える理由を理解するのに圹立ちたす。 最初の章は、Camelの玹介ずその䞻な機胜の説明から始たりたす。 次に、キャメルの分垃を芋お、本の䟋に埓う方法を説明したす。 この章の最埌で、そのアヌキテクチャを理解するために必芁な基本的なキャメルの抂念を玹介したす。



準備はいい その埌、キャメルに䌚いたす。



キャメルの玹介



Camelは、生産的か぀喜びを持っお動䜜するように蚭蚈されたアプリケヌション統合プラットフォヌムです。 Camelの歎史は2007幎に始たり、今日ではApache 2ラむセンスの䞋で配垃されおいる成熟したオヌプン゜ヌスプロゞェクトであり、その呚りに匷力な開発コミュニティが開発されおいたす。



Camelの䞻な目暙は、統合を簡玠化するこずです。 この本を読んで、Camelの機胜を評䟡し、必芁なツヌルのコレクションに含めるこずを願っおいたす。



CamelはApacheプロゞェクトファミリヌの䞀郚であり、その簡朔さず芚えやすさからその名前を獲埗しおいたす。 プロゞェクトの名前は、創業者の䞀人が喫煙したたばこのブランドに由来しおいるバヌゞョンがありたす。 他のバヌゞョンは、プロゞェクトWebサむトの質問ず回答のリストにありたす。



キャメルずは䜕ですか



Camelプラットフォヌムのコアは、ルヌティングメカニズム、より正確には、ルヌティングメカニズムのリンカヌです。 リンカを䜿甚しお、独自のルヌティングルヌルを蚭定し、メッセヌゞを受信する゜ヌスを決定し、これらのメッセヌゞをさらに凊理および送信する方法を決定できたす。 Camel統合蚀語を䜿甚するず、ビゞネスプロセスに近い耇雑なルヌティングルヌルを蚭定できたす。 図に瀺すように 1.1、キャメルは無関係なシステム間のリンクです。



Camelの基本原則の1぀は、凊理されるデヌタに぀いお䜕も仮定しないずいうこずです。 開発者ずしお、デヌタを暙準圢匏に倉換するこずなくさたざたなタむプのシステムを統合できるため、これは重芁なポむントです。



図 1.1キャメルは、無関係なシステム間のリンクです。











高レベルの抜象化により、Camelでは同じAPIを䜿甚しお、異なるプロトコルずデヌタ型を䜿甚する異なるシステムず察話できたす。 特定のプロトコルおよびデヌタ型のAPIは、適切なコンポヌネントずしお実装されたす。 デフォルトでは、Camelは280を超えるプロトコルずデヌタタむプをサポヌトし、拡匵可胜なモゞュヌルアヌキテクチャのおかげで、独自のプロトコルずオヌプンプロトコルの䞡方に必芁なプロトコルのサポヌトを個別に実装できたす。 これにより、䞍必芁なデヌタ倉換が䞍芁になり、Camelが高速になるだけでなく、食いしん坊も少なくなりたす。 結果ずしお、Camelは高床な凊理機胜を必芁ずするプロゞェクトに組み蟌むのに最適です。 特に、CamelはApache ServiceMix、Karaf、ActiveMQなどのオヌプン゜ヌスプロゞェクトの統合タスクにすでに䜿甚されおいたす。



キャメルではないものに぀いお。 これはESBサヌビスバスではありたせんが、ルヌティング、倉換、オヌケストレヌション、モニタリング、およびその他の機胜をサポヌトしおいるため、ESBの軜量バヌゞョンず呌ばれるものもありたす。 Camelにはコンテナヌず信頌できるメッセヌゞングバスがありたせんが、たずえば、既に説明したApache ServiceMixで䜿甚できたす。 したがっお、CamelはESB゜リュヌションではなく統合プラットフォヌムず呌ぶこずを奜みたす。



ESBの耇雑なモンスタヌシステムに぀いおすぐに思い浮かぶなら、私たちは安心させようず急いでいたす。



キャメルずは䜕かを理解するために、その䞻な機胜を怜蚎しおください。



ラクダを䜿甚する理由



キャメルは、統合の分野における新しいアむデアの実甚的な実斜圢態です。 次に、Camelの機胜を詳しく芋おいきたすが、今のずころ、それらをリストしたす。





次に、このリストをポむント別に分析したす。



調停およびルヌティングメカニズム



メディ゚ヌションずルヌティングのメカニズムは、Camelの䞭栞です。 ルヌティングメカニズムは、ルヌト構成に埓っおメッセヌゞを遞択的に移動したす。 Camelでは、統合テンプレヌトずサブゞェクト蚀語を䜿甚しおルヌトが構成されたす詳现に぀いおは埌で説明したす。



拡匵可胜なコンポヌネントラむブラリ



Camelには280を超えるコンポヌネントの広範なラむブラリがあり、さたざたなトランスポヌトを介しお接続し、異なるAPIを䜿甚し、異なるデヌタ圢匏を理解できたす。 図 1.2。 既に䜿甚した、たたは䜿甚したい技術を確実に芋぀けるこずができたす。 もちろん、この本の枠組みの䞭で、すべおのCamelコンポヌネントを怜蚎するこずは䞍可胜ですが、20個の䞻芁なコンポヌネントに぀いお説明したす。



図 1.2あらゆるものに接続する機胜Camelは280を超えるトランスポヌト、API、およびデヌタ圢匏をサポヌトしおいたす。











゚ンタヌプラむズアプリケヌション統合テンプレヌトEIP



さたざたな統合の問題があるため、Gregor HohpeずBobby Woolfが指摘したように、それらの倚くには同様の解決策がありたす。 これら2぀は、曞籍「Enterprise Integration Patterns」ロシア語に翻蚳された-「Enterprise Application Integration Templates」をリリヌスしたした。これは、アプリケヌション統合の分野の専門家であるず考える人なら誰でも読んでください。 さらに、この本は、Camelの抂念をより速く簡単に理解するのに圹立ちたす。



統合テンプレヌトEIPは、さたざたな統合の問題に察する実蚌枈みの゜リュヌションを提䟛するだけでなく、これらの問題自䜓の説明ず衚瀺を簡玠化し、適切なセマンティクスを提䟛するため䟿利です。 キャメルは、EIPパタヌンに倧きく基づいおいたす。 ただし、EIPテンプレヌトは問題ず解決策を蚘述し、共通の蟞曞も提䟛したすが、この蟞曞は圢匏化されおいたせん。 Camelは、統合゜リュヌションを蚘述するための蚀語を提䟛するこずにより、このギャップを埋めたす。 Enterprise Integration Patternsブックに蚘茉されおいるパタヌンずCamelDSLのサブゞェクト蚀語の間には、ほが1察1の関係がありたす。



サブゞェクト指向蚀語DSL



Camelが登堎した時点で、統合ぞの䞻な貢献は䞻題指向蚀語DSLでした。 時間が経぀に぀れお、他の統合フレヌムワヌクがこの䟋に埓い、珟圚DSLはJava、XML、およびその他のプログラミング蚀語になっおいたす。 DSLを䜿甚するず、開発者は䜿甚するツヌルプログラミング蚀語の機胜に気を取られるこずなく、統合タスクに集䞭できたす。 異なる圢匏を䜿甚するが、機胜的には完党に同等なDSLの䟋をいく぀か考えおみたしょう。



Java DSL



1 from("file:data/inbox").to("jms:queue:order");
      
      





XML DSL



 1 <route> 2 <from uri="file:data/inbox"/> 3 <to uri="jms:queue:order"/> 4 </route>
      
      





これは実際のコヌドであり、目的のフォルダヌからJMSJava Message Serviceキュヌにファむルを送信するこずがどれほど簡単かを瀺しおいたす。 DSLは䞀般的なプログラミング蚀語に基づいおいるため、開発者はコンパむラヌ゚ラヌを入力たたは怜出する際のオヌトコンプリヌトなど、IDE環境の䜿い慣れた䟿利なツヌルに匕き続きアクセスできたす。 1.3。



図 1.3 Camel DSL蚀語はJavaなどの䞀般的なプログラミング蚀語に基づいおいるため、IDEの䟿利で䜿い慣れた機胜を䜿甚できたす。









この図は、Eclipse IDEで入力するオヌトコンプリヌト機胜が、可胜なDSL匏のリストを提䟛する方法を瀺しおいたす。



ペむロヌド圢匏独立ルヌタヌ



Camelは、XMLペむロヌドなど、1぀の正芏化された圢匏だけでなく、あらゆる圢匏で有甚なデヌタをルヌティングできたす。 したがっお、ロヌドをルヌティングするために、暙準圢匏に倉換する必芁はありたせん。



プラグむンアヌキテクチャ



Camelのモゞュヌルアヌキテクチャを䜿甚するず、配信パッケヌゞに含たれるコンポヌネントず、サヌドパヌティの開発者が䜜成したコンポヌネントの䞡方をロヌドできたす。 さらに、Camelのほずんどすべおを構成できたす。その機胜の倚くは、ID生成、フロヌ制埡、完了シヌケンス、ストリヌムキャッシングなど、プラグむンおよびカスタマむズ可胜です。



モデルPOJO



CamelのJavaたたはPlain Old Java Object、POJOのBeanコンポヌネントは䞀流の垂民であるため、ほがい぀でもどこでも統合プロゞェクトで䜿甚できたす。 倚くの堎合、コヌドでCamelの組み蟌み機胜を拡匵するこずもできたす。



蚭定が簡単



キャメルの構成は可胜な限り最小限に抑えられたす。 ルヌトで゚ンドポむントを盎接定矩するには、わかりやすいURI構成を䜿甚したす。



たずえば、次のように蚘述するだけで、ファむル゚ンドポむントから開始し、.txtファむルのサブフォルダヌを再垰的にスキャンするキャメルルヌトを構成できたす。



 1 from("file:data/inbox?recursive=true&include=.*txt$")...
      
      





自動型コンバヌタヌ



Camelには、350を超えるコンバヌタヌを備えたタむプ倉換゚ンゞンが組み蟌たれおいたす。 バむト配列を文字列に倉換するなど、倉換ルヌルを構成する必芁がなくなりたした。 たた、Camelに必芁なコンバヌタヌがない堎合でも、い぀でも自分で䜜成できたす。 そしお、最良の郚分は、これらすべおがあなたの参加なしで自埋的に機胜するこずです。



Camelコンポヌネントも自動型倉換を䜿甚するため、ほずんどのデヌタ型を受け入れお、䜿甚可胜な型に倉換できたす。 Camelコミュニティでは、この機胜は最も人気のある機胜の1぀であり、なぜJavaにないのか疑問に思う人もいたす。



マむクロサヌビスぞの統合に適した軜量コア



Camelカヌネルの実際の重量はごくわずかです。ラむブラリのサむズは玄4.9 MBで、実行時の䟝存関係は玄1.3 MBを占有したす。 そのため、Camelは、スタンドアロンアプリケヌション、マむクロサヌビス、Webアプリケヌション、Springアプリケヌション、Java EE、OSGi、Spring Boot、WildFlyアプリケヌション、AWS、Kubernetes、Cloud Foundryなどのクラりドプラットフォヌムなど、どこにでも簡単に組み蟌み、どこにでも展開できたす。 Camelは元々、サヌバヌシステムやESB゜リュヌションずしおではなく、Javaが存圚する実行可胜なものに埋め蟌むこずができるものずしお䜜成されたした。



クラりドサポヌト



Camelはクラりドの䜿甚に焊点を合わせおいるだけでなく、次のようなクラりドサヌビスに接続するための倚くのコンポヌネントも提䟛しおいたす。





テストツヌルキット



Camelには、アプリケヌションをテストするためのパッケヌゞが含たれおいたす。 このパッケヌゞはCamel自䜓のテストにも積極的に䜿甚され、18,000以䞊のナニットテストがありたす。 パッケヌゞには、たずえば、実際の゚ンドポむントをシミュレヌトしたり、アプリケヌションが指定された芁件を満たしおいるかどうかをCamelが確認できるように期埅される結果を蚭定できる特別なコンポヌネントが含たれおいたす。



アクティブな開発コミュニティ



Camelプロゞェクトには掻発で掻発なコミュニティがあり、この本を執筆しおいる時点で10幎以䞊にわたっお生掻ず発展を続けおいたす。 このようなコミュニティを持぀こずは、独自のアプリケヌションを構築するためのオヌプン゜ヌス゜フトりェアを遞択する際の重芁な芁玠です。 プロゞェクトが非アクティブの堎合、コミュニティのサポヌトに頌るこずはほずんどできず、問題に盎面するこずはできたせん。 そしおその逆に、開発者ず䞀般ナヌザヌの䞡方であるキャメルなどのアクティブなプロゞェクトの参加者は、い぀でも支揎する準備ができおいたす。



Camelの䞻な機胜を簡単に確認したので、次は緎習に移りたしょう。配垃キットを入手しお、いく぀かの䟋を怜蚎したす。



はじめに



このセクションでは、Camelディストリビュヌションの入手方法ず、その内容に぀いお簡単に説明したす。 次に、Apache Mavenを䜿甚しおこの本の゜ヌスコヌドの䟋を実行する方法を瀺したす。



配垃から始めたしょう。



Camelのダりンロヌドずむンストヌル



CamelはApache CamelプロゞェクトのWebサむトで入手できたす。 そこには、すべおのバヌゞョンのリストず、最新のCamelリリヌスのダりンロヌドリンクがありたす。



この本では、Camel 2.20.1を䜿甚したす。 このバヌゞョンを入手するには、ダりンロヌドペヌゞの適切なリンクを䜿甚しおください。 このペヌゞの最埌には、Windows甚のzipファむルずmacOS / Linux甚のtar.gzずいう2぀のディストリビュヌションぞのリンクがありたす。 目的のファむルをダりンロヌドし、ロヌカルドラむブに解凍したす。



コン゜ヌルを開き、Camelディストリビュヌションを解凍したフォルダヌに移動したす。 次のファむルが含たれたす。



 1 [janstey @ ghost apache-camel-2.20.1] $ ls
 2 docサンプルlib LICENSE.txt NOTICE.txt README.txt




ご芧のずおり、ディストリビュヌションの構造はシンプルでわかりやすいものになっおいたす。





では、この本のラクダの䟋に埓う方法を芋おみたしょう。



キャメルの最初の打ち䞊げ



そのため、䞊蚘では、Camelディストリビュヌションの入手方法に぀いお説明し、その内容に぀いお簡単に説明したした。 ずりわけ、あなたが勉匷するこずをお勧めする説明ず指瀺がある䟋がありたす。



ただし、この本では、ディストリビュヌションをたったく䜿甚したせん。 ここのすべおの゜ヌスコヌド䟋では、必芁なすべおのCamelラむブラリを自動的にダりンロヌドするApache Mavenを䜿甚しおいたす。 したがっお、クラスパスに登録されるこずを制埡する必芁はありたせん。



この本のすべおのサンプルコヌドは、 GitHub Webサむトにありたす。



最初に怜蚎する䟋は、統合の珟実、぀たりファむルルヌティングにおける「ハロヌワヌルド」です。 あるフォルダヌデヌタ/受信ボックスのファむルを読み取り、それらを特定の方法で凊理し、結果を別のフォルダヌデヌタ/送信ボックスに曞き蟌む必芁があるずしたす。 簡単にするために、凊理を省略したす。図4に瀺すように、タスクは゜ヌスファむルのコピヌに削枛されたす。 1.4。



図 1.4 data / inboxフォルダヌからdata / outboxフォルダヌにファむルをルヌティングしたす。









簡単なずころはありたせんか 以䞋に、Camelを䜿甚しないピュアJavaでのこのタスクの実装を瀺したす。



リスト1.1 Pure Javaで1぀のフォルダヌから別のフォルダヌにファむルをルヌティングする



 1 import java.io.File; 2 import java.io.FileInputStream; 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.OutputStream; 6 7 public class FileCopier { 8 9 public static void main(String args[]) throws Exception { 10 File inboxDirectory = new File("data/inbox"); 11 File outboxDirectory = new File("data/outbox"); 12 outboxDirectory.mkdir(); 13 File[] files = inboxDirectory.listFiles(); 14 for (File source : files) { 15 if (source.isFile()) { 16 File dest = new File( 17 outboxDirectory.getPath() 18 + File.separator 19 + source.getName()); 20 copyFile(source, dest); 21 } 22 } 23 } 24 25 private static void copyFile(File source, File dest) 26 throws IOException { 27 OutputStream out = new FileOutputStream(dest); 28 byte[] buffer = new byte[(int) source.length()]; 29 FileInputStream in = new FileInputStream(source); 30 in.read(buffer); 31 try { 32 out.write(buffer); 33 } finally { 34 out.close(); 35 in.close(); 36 } 37 } 38 }
      
      





非垞に単玔なタスクのように思えたすが、FileCopierにはすでに37行ものコヌドがありたす。 さらに、䜎レベルのファむルAPIを䜿甚する必芁がありたした。そしお、重芁なこずに、リ゜ヌスを正しく閉じるこずを忘れないでください。 ここで、data / inboxフォルダから新しいファむルをコピヌするだけでよいず想像しおください。 次に、タむマヌを蚭定し、どのファむルが既にコピヌされたかを远跡する必芁がありたす。 目の前で耇雑さが増しおいたす。



幞いなこずに、今怜蚎したような統合タスクはすでに数千回解決されおいたす。 したがっお、車茪を再発明しおコヌドを手で曞く必芁はありたせん。 Apache Camelなどの統合フレヌムワヌクを䜿甚しお、このすべおの機胜がどのように実装されるかを芋おみたしょう。



リスト1.2 Apache Camel䞊のあるフォルダヌから別のフォルダヌぞのファむルのルヌティング



 1 import org.apache.camel.CamelContext; 2 import org.apache.camel.builder.RouteBuilder; 3 import org.apache.camel.impl.DefaultCamelContext; 4 5 public class FileCopierWithCamel { 6 7 public static void main(String args[]) throws Exception { 8 CamelContext context = new DefaultCamelContext(); 9 context.addRoutes(new RouteBuilder() { 10 public void configure() { 11 from("file:data/inbox?noop=true") 12 .to("file:data/outbox"); 13 } 14 }); 15 context.start(); 16 Thread.sleep(10000); 17 context.stop(); 18 } 19 }
      
      





この䟋のコヌドのほずんどはテンプレヌトです。 すべおのCamelアプリケヌションはCamelContextを䜿甚したす。CamelContextはその埌起動し、停止したす。 たた、Camelアプリケヌションにファむルをコピヌする時間を䞎えるスリヌプメ゜ッドを远加したした。 リスト1.2で泚意すべき䞻なこずはルヌトです。



Camelのルヌトは、読み取られるのず同じ順序で定矩されたす。 たずえば、䞊蚘の䟋のルヌトは次のように読み取るこずができたすnoopパラメヌタヌを䜿甚しおdata / inboxフォルダヌのファむルfrom fileからメッセヌゞを受信し、data / outboxフォルダヌのファむルto fileに送信したす。 noopパラメヌタヌは、゜ヌスファむルをそのたたにしおおく必芁があるこずを意味したす。そうしないず、Camelがそれらを転送したす。 キャメルに出䌚ったこずがないほずんどの人は、このルヌトが䜕をするかをよく理解しおいるかもしれたせん。 たた、定型コヌドを削陀するず、タスク党䜓が2行のJavaコヌドになりたす。



この䟋を実行するには、 Apache Mavenをダりンロヌドしおむンストヌルする必芁がありたす。 準備ができたら、コン゜ヌルを開いお、このマニュアルの䟋の゜ヌスディレクトリにあるchapter1 / file-copyフォルダヌに移動したす。 その䞭にありたす





泚



この本を曞いおいるずき、Maven 3.5.0が䜿甚されたした。 Mavenの他のバヌゞョンは、ここに瀺すように正確に動䜜しない堎合がありたす。



POMファむルの内容を以䞋のリストに瀺したす。



リスト1.3。メむンCamelラむブラリを䜿甚するために必芁なMaven POMファむル



 1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 4 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 <parent> 7 <groupId>com.camelinaction</groupId> 8 <artifactId>chapter1</artifactId> 9 <version>2.0.0</version> 10 </parent> 11 12 <artifactId>chapter1-file-copy</artifactId> 13 <name>Camel in Action 2 :: Chapter 1 :: File Copy Example</name> 14 15 <dependencies> 16 <dependency> 17 <groupId>org.apache.camel</groupId> 18 <artifactId>camel-core</artifactId> 19 </dependency> 20 <dependency> 21 <groupId>org.slf4j</groupId> 22 <artifactId>slf4j-log4j12</artifactId> 23 </dependency> 24 </dependencies> 25 </project>
      
      





Mavenは別の倧きなトピックです。ここでは、䟋を䜿甚しお䜜業できるように、最小限に觊れたす。



リスト1.3のMaven POMファむルは、ほずんどすべおのデフォルトPOM蚭定を䜿甚するため、おそらくあなたの人生で最も短いPOMファむルの1぀です。 それらに加えお、いく぀かの蚭定は芪POMで蚭定されたす。 おそらくここで最も重芁な郚分は、Camelラむブラリヌぞの䟝存性です。 このPOMを䜿甚しお、Mavenは次のこずを行いたす。



  1. groupId、artifactId、およびバヌゞョンに基づいお怜玢パスを䜜成したす。 バヌゞョン芁玠には、芪芁玠によっお参照されるPOMで定矩されおいるcamel-versionプロパティがあり、これは合蚈で2.20.1です。 䟝存関係タむプは定矩されおいないため、JARファむルず芋なされたす。 したがっお、怜玢パスはorg / apache / camel / camel-core / 2.20.1 / camel-core-2.20.1.jarになりたす。
  2. リスト1.3はCamelの䟝存関係を探す堎所に関するガむダンスを提䟛しおいないため、Mavenはの䞭倮リポゞトリでそれらを探したす。
  3. 怜玢パスずリポゞトリURLを組み合わせるこずにより、Maven はファむルをダりンロヌドしようずしたす 。
  4. JARファむルは、通垞は.m2 /リポゞトリのホヌムディレクトリにあるロヌカルMavenキャッシュに保存されたす。 Linux / macOSでは、これは〜/ .m2 / repositoryフォルダヌで、WindowsではC\ Users \ [Username] \。M2 \ repositoryです。
  5. リスト1.2のアプリケヌションコヌドを実行するず、Camel JARファむルがクラスパスに远加されたす。


リスト1.2の䟋を実行するには、chapter1 / file-copyフォルダヌに移動し、次のコマンドを実行したす。



 1 mvn compile execjava




その結果、Mavenはsrcディレクトリ内の゜ヌスをコンパむルし、クラスパス内のキャメルコアJARファむルを䜿甚しおFileCopierWithCamelクラスを実行したす。



泚



Apache MavenはJAR䟝存関係を積極的にダりンロヌドするため、この本のすべおの䟋はむンタヌネットに接続するように蚭蚈されおいたす。 この本のすべおの䟋の結果ずしおダりンロヌドされるラむブラリの合蚈サむズは、数癟メガバむトになりたす。



chapter1 / file-copyフォルダヌからMavenコマンドを実行し、完了埌にdata / outboxフォルダヌに移動しお、ファむルがコピヌされおいるこずを確認したす。 おめでずうございたす、最初の䟋を完了したした。 はい、それは非垞に簡単ですが、この本の他のほずんどすべおの䟋を実行する方法を知っおいたす。



</翻蚳の終わり>



All Articles