mike、mikeなるままに…

プログラムに関してぬるま湯のような記事を書きます

GradleのsetupBuildタスクを試してみた

こんにちわ。みけです。

前回の記事、gradle1.7のリリースノート超意訳で、

いくつか気になる機能があったので試してみることにしました。


今回は、setupBuildタスクを試してみます。

リリースノートでは

  • javaプラグインが適用されたシンプルなビルドファイル
  • サンプルのプロダクションクラスとディレクトリー
  • サンプルのJUnitテストとディレクトリー
  • Gradle Wrapperファイル

が生成されるとありました。

では実際に試してみたいと思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$ mkdir sample
$ cd sample/
$ ll
total 0
drwxr-xr-x  2 mike  staff    68B  7  9 11:19 .
drwxr-xr-x  3 mike  staff   102B  7  9 11:16 ..
$ gradle setupBuild --type java-library
:wrapper
:setupBuild

BUILD SUCCESSFUL

Total time: 6.362 secs
$ ll
total 40
drwxr-xr-x  9 mike  staff   306B  7  9 11:19 .
drwxr-xr-x  3 mike  staff   102B  7  9 11:16 ..
drwxr-xr-x  3 mike  staff   102B  7  9 11:19 .gradle
-rw-r--r--  1 mike  staff   1.2K  7  9 11:19 build.gradle
drwxr-xr-x  3 mike  staff   102B  7  9 11:19 gradle
-rwxr-xr-x  1 mike  staff   5.0K  7  9 11:19 gradlew
-rw-r--r--  1 mike  staff   2.3K  7  9 11:19 gradlew.bat
-rw-r--r--  1 mike  staff   645B  7  9 11:19 settings.gradle
drwxr-xr-x  4 mike  staff   136B  7  9 11:19 src

お、見事プロジェクトが作成されています。

また、wrapperタスクを実行した後の状態になっていることもわかります。

(gradleディレクトリー、gradlewファイルとgradlew.batファイルが生成されている)

では、build.gradleの中身を見てみたいと思います。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ cat build.gradle 
/*
 * This build file was auto generated by running the Gradle 'buildSetup' task
 * by 'mike' at '13/07/09 11:19' with Gradle 1.7-rc-1
 *
 * This generated file contains a sample Java project to get you started.
 * For more details take a look at the Java Quickstart chapter in the Gradle
 * user guide available at http://gradle.org/docs/1.7-rc-1/userguide/tutorial_java_projects.html
 */

// Apply the java plugin to add support for Java
apply plugin: 'java'

// In this section you declare where to find the dependencies of your project
repositories {
    // Use 'maven central' for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenCentral()
}

// In this section you declare the dependencies for your production and test code
dependencies {
    // The production code uses the SLF4J logging API at compile time
    compile 'org.slf4j:slf4j-api:1.7.5'

    // Declare the dependency for your favourite test framework you want to use in your tests.
    // TestNG is also supported by the Gradle Test task. Just change the
    // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
    // 'test.useTestNG()' to your build script.
    testCompile "junit:junit:4.11"
}

作成されたbuild.gradleファイルでは

  • javaプラグインが適用されている
  • slf4jがコンパイル用のライブラリーとして登録されている
  • JUnitがテスト用のライブラリーとして登録されている

ようです。

また、サンプルのプロダクションコードとテストコードが生成されるということですが、

  • src/main/java/Library.java
  • src/test/java/LibraryTest.java

の二つのファイルが作成されています。

それぞれの中身は次のようになっています。

Library.java
1
2
3
4
5
6
7
8
9
10
11
/*
 * This Java source file was auto generated by running 'gradle buildSetup --type java-library'
 * by 'mike' at '13/07/09 11:19' with Gradle 1.7-rc-1
 *
 * @author mike, @date 13/07/09 11:19
 */
public class Library {
    public boolean someLibraryMethod() {
        return true;
    }
}
LibraryTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.junit.Test;
import static org.junit.Assert.*;

/*
 * This Java source file was auto generated by running 'gradle buildSetup --type java-library'
 * by 'mike' at '13/07/09 11:19' with Gradle 1.7-rc-1
 *
 * @author mike, @date 13/07/09 11:19
 */
public class LibraryTest {
    @Test public void testSomeLibraryMethod() {
        Library classUnderTest = new Library();
        assertTrue("someLibraryMethod should return 'true'", classUnderTest.someLibraryMethod());
    }
}

実際にこのコードを使うことはないと思いますが、

これまでmavenライクなディレクトリーを作るのが面倒だったので、

このsetupBuildタスクができたことはGradleユーザーには朗報ですね。