Gradle入門
Spring bootでGradleの知識が必要だったので、Gradleをインストールしてみました。
前提条件:Java JDK or JRE 7以上
gradle-5.1.1-bin.zipをダウンロードしてc:\gradleにでも配置します。
C:\gradle\binをPATHに追加します。次にバージョンを確認してみます。
C:\Users\takahashi>gradle -v Welcome to Gradle 5.1.1! Here are the highlights of this release: - Control which dependencies can be retrieved from which repositories - Production-ready configuration avoidance APIs For more details see https://docs.gradle.org/5.1.1/release-notes.html ------------------------------------------------------------ Gradle 5.1.1 ------------------------------------------------------------ Build time: 2019-01-10 23:05:02 UTC Revision: 3c9abb645fb83932c44e8610642393ad62116807 Kotlin DSL: 1.1.1 Kotlin: 1.3.11 Groovy: 2.5.4 Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018 JVM: 1.8.0_191 (Oracle Corporation 25.191-b12) OS: Windows 10 10.0 amd64
5.1.1が入っていることが確認できます。
次にGradle Wrapperを作成します。Spring Bootにあるgradle\wrapper\gradle-wrapper.jarなどのことを指します。
C:\workspace\gradle-project>gradle wrapper Starting a Gradle Daemon (subsequent builds will be faster) BUILD SUCCESSFUL in 6s 1 actionable task: 1 executed
これで以下構成が作成されるはずです。
C:. │ gradlew │ gradlew.bat │ ├─.gradle │ ├─5.1.1 │ │ │ gc.properties │ │ │ │ │ ├─executionHistory │ │ │ executionHistory.bin │ │ │ executionHistory.lock │ │ │ │ │ ├─fileChanges │ │ │ last-build.bin │ │ │ │ │ └─fileHashes │ │ fileHashes.bin │ │ fileHashes.lock │ │ │ └─buildOutputCleanup │ buildOutputCleanup.lock │ cache.properties │ outputFiles.bin │ └─gradle └─wrapper gradle-wrapper.jar gradle-wrapper.properties
この構成をSVNなどにコミットしておけばgradlewコマンドで全メンバーがビルドができるようになります。以降、gradleではなくgradlewコマンドを使います。
gradlew initコマンドでJavaアプリケーションの雛形を作成します。
C:\workspace\gradle-project>gradlew init --type java-application Select build script DSL: 1: groovy 2: kotlin Enter selection (default: groovy) [1..2] 1 Select test framework: 1: junit 2: testng 3: spock Enter selection (default: junit) [1..3] 1 Project name (default: gradle-project): sample Source package (default: sample): BUILD SUCCESSFUL in 36s 2 actionable tasks: 1 executed, 1 up-to-date C:\workspace\gradle-project>
これでsrc/main/java/sample/App.javaが作成されていると思います。
gradlew build
でビルドします。ビルドが終わると、buildフォルダが作成されてその配下にclassファイルなどが作成されます。
gradlew run
でプロジェクトを実行します。
C:\workspace\gradle-project>gradlew run > Task :run Hello world. BUILD SUCCESSFUL in 0s 2 actionable tasks: 1 executed, 1 up-to-date C:\workspace\gradle-project>
Hello world.と標準出力されることが確認できます。
taskを確認する
デフォルトでいくつかtaskが用意されているので、gradlew tasks
で確認します。
C:\workspace\gradle-project>gradlew tasks > Task :tasks ------------------------------------------------------------ Tasks runnable from root project ------------------------------------------------------------ Application tasks ----------------- run - Runs this project as a JVM application Build tasks ----------- assemble - Assembles the outputs of this project. build - Assembles and tests this project. buildDependents - Assembles and tests this project and all projects that depend on it. buildNeeded - Assembles and tests this project and all projects it depends on. classes - Assembles main classes. clean - Deletes the build directory. jar - Assembles a jar archive containing the main classes. testClasses - Assembles test classes. Build Setup tasks ----------------- init - Initializes a new Gradle build. wrapper - Generates Gradle wrapper files. Distribution tasks ------------------ assembleDist - Assembles the main distributions distTar - Bundles the project as a distribution. distZip - Bundles the project as a distribution. installDist - Installs the project as a distribution as-is. Documentation tasks ------------------- javadoc - Generates Javadoc API documentation for the main source code. Help tasks ---------- buildEnvironment - Displays all buildscript dependencies declared in root project 'sample'. components - Displays the components produced by root project 'sample'. [incubating] dependencies - Displays all dependencies declared in root project 'sample'. dependencyInsight - Displays the insight into a specific dependency in root project 'sample'. dependentComponents - Displays the dependent components of components in root project 'sample'. [incubating] help - Displays a help message. model - Displays the configuration model of root project 'sample'. [incubating] projects - Displays the sub-projects of root project 'sample'. properties - Displays the properties of root project 'sample'. tasks - Displays the tasks runnable from root project 'sample'. Verification tasks ------------------ check - Runs all checks. test - Runs the unit tests. Rules ----- Pattern: clean<TaskName>: Cleans the output files of a task. Pattern: build<ConfigurationName>: Assembles the artifacts of a configuration. Pattern: upload<ConfigurationName>: Assembles and uploads the artifacts belonging to a configuration. To see all tasks and more detail, run gradlew tasks --all To see more detail about a task, run gradlew help --task <task> BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed C:\workspace\gradle-project>
色々ありますが、gradlew clean
でbuildディレクトリを削除することができ、gradlew build
でビルドしてbuildディレクトリが作成されるようです。
gradlew run
で実行します。
続けて、gradlew clean build run
と書くことができるようです。
gladlew jar
でbuild\libs配下にjarファイルなんかも作成してくれます。
build.gradleをいじる
Spring bootにも存在するbuild.gradleですが、これにタスクを追加したりしてみます。
build.gradle自体はgroovyで書かれているのでMavenのxmlファイルよりもプログラミングっぽいです。
build.gradleにタスクを定義してみます。
plugins { id 'java' id 'application' } repositories { jcenter() } dependencies { implementation 'com.google.guava:guava:26.0-jre' } // 追記 mainClassName = 'sample.App'task hello { task hello { doLast { println 'aaaaaa!' } }
これで、gradlew hello
とすると標準出力されます。
C:\workspace\gradle-project>gradlew hello > Task :hello aaaaaa! BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed C:\workspace\gradle-project>
タスクの依存関係
dependsOnを使ってタスク間に依存関係を持たせることができます。
task hello { doLast { println 'aaaaaa!' } } task bye(dependsOn: hello) { doLast { println 'bye!' } }
実行する際は、gradlew -q bye
というように-qオプションを使用します。
C:\workspace\gradle-project>gradlew -q bye aaaaaa! bye! C:\workspace\gradle-project>
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント