読者です 読者をやめる 読者になる 読者になる

日々常々

ふつうのプログラマがあたりまえにしたいこと。

Gradle1.9でsetupBuildがinitに

gradle1.9が出てたので。バージョンアップして。おもむろにsetupBuildを叩いたら。

% gradle setupBuild

FAILURE: Could not determine which tasks to execute.

* What went wrong:
Task 'setupBuild' not found in root project 'radishtainer'.

* Try:
Run gradle tasks to get a list of available tasks.

BUILD FAILED

Total time: 3.202 secs

(´・ω・`)

setupBuild?

gradle1.7で導入された便利機能です。build.gradleを生成してくれるんですが、注目するべきはpom.xmlを読み取って作ってくれるところにあります。build.gradle→pom.xmlへはmavenプラグインで出来たのですが、pom.xml→build.gradleは結構力技なところが有ったり無かったりで、とても嬉しい機能の一つでした。

でもこれが動かない……綴り間違えたかと思ったけど、確か昨日は使えたしなぁ……(´・ω・`)

書いてた

The task ´setupBuild´ provided by the auto-applied BuildInit plugin was renamed to ´init´.

Gradle 2.2.1 Release Notes

変わったんだって。

initでやりなおした

こんな感じのが出来ます。元のpom.xmlこれ

apply plugin: 'java'
apply plugin: 'maven'

group = 'net.hogedriven.backpaper0'
version = 'BURIDAIKON-SNAPSHOT'

description = """大根テナー"""

sourceCompatibility = 1.7
targetCompatibility = 1.7



repositories {
        
     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    testCompile group: 'javax.inject', name: 'javax.inject-tck', version:'1'
    testCompile group: 'junit', name: 'junit', version:'4.11'
    compile(group: 'javax.inject', name: 'javax.inject', version:'1') {
       /* This dependency was originally in the Maven provided scope, but the project was not of type war.
       This behavior is not yet supported by Gradle, so this dependency has been converted to a compile dependency.
       Please review and delete this closure when resolved. */
    }
}

groupIdやversionはもちろん、maven-compiler-pluginのsource/targetバージョンも持ってきてくれます。地味に便利。artifactIdはsettings.gradleのrootProject.nameの方に行きます。

で、下の方のコメントはまぁ書いている通りなんですが、jarプロジェクトだとサポートしてないのでcompileになってるぜ、と。書いてるままにpom.xmlのpackagingをwarにしたら素直に

   providedCompile group: 'javax.inject', name: 'javax.inject', version:'1'

となるです。warて。

まとめ

  • リリースノートには目を通しましょう。
    • そうは言うがな大佐。
  • setupBuild より覚えやすくてよい。
  • けど `git init` と `gradle init` を間違える率があっぷ……
    • ただでさえ `gradle commit` とか `git test` とか叩くのに(´・ω・`)
  • 徐々にgradleが色々揃えてきてる。
    • 「知ってる人は好き放題できる」に「知らなくてもそこそこ使える」が加わってきた感はあるかも。