ラベル Gradle の投稿を表示しています。 すべての投稿を表示
ラベル Gradle の投稿を表示しています。 すべての投稿を表示

2017年1月31日火曜日

Groovyでプロジェクトを作る (gradle)

groovyでプロジェクトを作る際に最低限必要なbuild.graldeを紹介。
gradleプロジェクトの作成
gradle init
カレントディレクトリに、build.gradleや、gradlew などのファイルが生成される。

2017年1月8日日曜日

sourceSet の追加 (Gradle)

Gradle で src/main とか src/test 以外に、新たにソースセットを増やしたい場合、
何すればいいんだっけ? となったので、記録しておく。

とりあえず、build.gradle を編集だ〜。

sourceSetsに新しい項目を追加する。(今回追加するsourceSetは"newSrc"とする)
sourceSets {
  newSrc {
    groovy {
      // srcディレクトリの指定
      srcDir 'src/newSrc/groovy'
   }
}

新たに追加された sourceSet (configuration) に対して、依存ライブラリが必要であれば記載する。
dependencies {
  newSrcCompile 'org.codehaus.groovy:groovy-all:2.4.7'

  // mainに依存する場合は、記載する。
  newSrcCompile sourceSets.main.output
}

jarの生成タスク追加
task newSrcJar(type: Jar) {
  from sourceSets.newSrc.output
}

2017年1月4日水曜日

build.gradle を編集後に、IntelliJ IDEA に反映されない。

Gradle と IntelliJ IDEA を使っていて、
build.gradleを編集しても、IntelliJ IDEA側に依存ライブラリなどが反映されない場合は、
Gradleタブにある Refresh all Gradle projects というボタンを押すと反映される。


dependenciesに追加しても、全然反映されないので、
./gradlew cleanIdea したり、再起動したりしても反映されなかったが、↑のボタン押すだけだった。
./gradlew idea だけで反映されるようになると便利なんだけどな〜。

2017年1月3日火曜日

GradleでビルドするとNoClassDefFoundErrorが発生する場合の対処 (Groovy)


Groovy で
FileNameFinderクラスや、CliBuilderを利用している時に
./gradlew run などで実行すると、NoClassDefFoundError が発生する場合がある。

どうやら、ant や commons-cli に依存しているようだが、
groovy-allであってもそれらは Optional Dependencies な為、
コンパイルする場合は明示的に依存解決しておかないと駄目みたい。。
(たぶんそういう事だと思う)

gradleで依存解決を記載するのは、
下記のように(build.gradleの) dependencies に ant / commons-cli を追記すればOK

dependencies {
    compile "org.codehaus.groovy:groovy-all:2.4.7"
    compile "org.apache.ant:ant:1.9.7"
    compile "commons-cli:commons-cli:1.3.1"
}

# ant
https://mvnrepository.com/artifact/org.apache.ant/ant/1.9.7

# commons-cli
https://mvnrepository.com/artifact/commons-cli/commons-cli/1.3.1