平野重利(20)14こんにちは、平野です。IDEは使わないでコマンドラインからの確認を行います。(だから現代人になれないのでは?)スタート地点この記事の内容を行う前の私の状況です。Javaのプログラムの基本的な部分はまあまあ理解しているJavaのビルドと言えばCLASSPATH設定してコマンドラインでjavacするの一択そのあとjarコマンドで固めるEclipseはちょっと使ったことあるけど、CLASSPATHの設定の仕方も思い出せないGradleは触ったことあるけど、人が書いたものを実行しただけまた他のビルドツールについてもAnt?Maven?なにそれ、新しいポケモン?な感じです。Gradleのインストール&検証環境Macならインストールは以下のコマンドだけのはずです。実際インストールしたのは結構前なので・・・)。gradle検証に使用したバージョンは以下です。x86_64一番最初のビルド早速最小限に近いようなプログラムのビルドを行ってみます。以下のようなJava初学者が最初に書くプログラムを用意します。}}(私が知っている唯一の)ビルド&実行の方法は以下のような感じですね。TestHelloWorldまずはこれをGradleを使って行うことが最初のゴールです。このファイルを以下のパスに設置します。初めからこの場所に置いておくことにします。次にbuild.gradleという名前で、Gradleで行うビルド内容の定義を書いていきます。'java'最初、「基本的なプログラムのビルドぐらい、設定ファイルになにも書かないでもできないもんかな?」と思ったのですが、Gradleのコア部分には、実際の自動化に役に立つような機能は含まれていません。これは意図的なもので、Javaのコードをコンパイルしたりといった便利な機能は、全てプラグインにより追加されます。Javaの基本的なコンパイルもプラグインで実行するというスタンスのようです。ただの設定ファイルだと思っておいて問題ないかと思います。実行できるサブコマンドの一覧を得ることができます。classes.(以下略)assembleやbuildなど、似たようなものが並んでいます。assembleを行ってみます。executed成功しました。buildディレクトリが作成され、中にclassとJarファイルが作成されました。build/classes/java/main/Test.classbuild/libs/sample02.jar期待したものが出力されたので、それぞれ確認してみます。TestHelloWorldclassファイル、Jarファイル共に期待通りの動作になっています。Test.javaと同じことができました!外部ライブラリさて、これだけだとGradleを使う旨味がないので、外部ライブラリを使用してみます。SDKを使ってみようと思います。Javaのプログラムとして以下のTest.javaを準備します。}}S3のクライアントを準備して、バケットの名前一覧を表示するプログラムです。あとはimportしているクラスが見つかれば正しく実行ができるはずです。そのままビルドして失敗してみます。^(以下略)クラスが見つからない、という期待通りのエラーが返ってきました。いうのを一つ一つ確認するのは大事です。SDKのクラスと紐付けてあげなくてはいけません。それにCLASSPATHを通して実行する形になります。すごいですねー(普通?)ということで、build.gradleに以下のように記述します。dependenciesに必要なライブラリを記述します。少なくともここで見つからないものが出てくるまではこのまま特に変更しなくても良さそうです。dependenciesに書いた内容はこちらに記載されているものをそのまま書いています。それっぽいものを指定すれば大丈夫そうです。ここで見つかった早速これでビルドして行きます。cleanも行います。assembleとするとcleanしてからassembleを行います。:compileJava注意:/Users/hirano.shigetoshi/study/20191213-java-gradle/sample02/src/main/java/Test.javaは非推奨のAPIを使用またはオーバーライドしています。注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。executed問題なくビルド完了です。古いクラスを使っている警告が出ていますが、今回は目をつぶってください。残念ながら必要なライブラリが手元にないので、それらがないとやはり実行はできません。上記の解決策の一つとして、必要なクラス全部入りのJarを作ってみます。Jarと呼ばれるようです。Shadowというプラグインを使います。使い方として、build.gradleを以下のように書き換えます。true}pluginsは、従来からあったjavaと合わせて、上記のように書き換えます。Shadowと2つのプラグインを使うという意味になります。trueの部分は(大事そうに見えるけど)本質ではないです。そのままビルドすると容量が大きくて以下のように言われるので、つけました。extension.これで準備完了。shadowJarと実行します。tasksすると確認することができます。dependenciesでは、ビルドします。:compileJava注意:/Users/hirano.shigetoshi/study/20191213-java-gradle/sample02/src/main/java/Test.javaは非推奨のAPIを使用またはオーバーライドしています。注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。executed24秒ほどと、ちょっと時間がかかってビルド完了です。容量を見てみると153MBありました。たくさんのclassが含まれていることがわかります。SDKのクラスが使う別のJarも探してくる必要があり、大変でした。バージョンが適合していないようで、よくわからない所でエラーが出てしまっていました。いうことに気づいたのでした(遅っっっっっっっっっっっっっっ!ビルドツールはこの辺をやってくれるので本当に便利です。こんなことに時間使いたくないなぁという思いが解消されるのは素晴らしいです!まとめJavaのビルドツールとしてGradleを手探りで触ってみました。Gradleの使い方がだいぶわかってきました。これで少し現代人に近づけた気がします。207,636DI部の平野です。インドアに住んでいます。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。EC2)環境において、不要な踏み台サーバをなくすことができる便利なアップデートです。臼田佳祐295ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介252SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。芳賀健232こんにちは!猫様の忠実なるしもべ、芳賀健です。Tokyoで開催されました。カフェ店長のオカノです。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。