2

Groovy で作成された実用的な小さなアプリケーションがあります。現時点では、コマンド ラインでテストできますが、Jenkins サーバーと統合する必要があります。そのため、Gradle と統合して、Jenkins が読み取れる標準形式でテスト出力を生成することを考えました。(私はGroovy、Gradle、Jenkins、およびJVM環境全般に不慣れであることを考慮してください)。

現時点では、すべてのテストはMyTest、拡張された単一のクラス内に存在しますGroovyTestCase。次のような小さなbashスクリプトで実行できます

#! /bin/bash

DIR=$( cd "$( dirname "$0" )" && pwd )
LIBS="$DIR/lib/*"

groovy -cp "$LIBS" path/to/MyTest.groovy

このレイアウトには気に入らない点が複数あります。

  • まず、テストを複数のクラスに分けてテストスイートに結合したいのですが、テストケースはGroovyで自動実行できるという利点がありました
  • 第二に、私が言ったように、Jenkins によって消費されるテスト レポートを取得できるようにしたいと考えています。
  • 第 3 に、必要なすべての jar をlibディレクトリに配置することが適切な方法であるかどうかはわかりません。おそらくそうではありません。

Gradle はまさに私が必要としているツールのようです。しかし、私が見つけたすべてのドキュメントは、Java、Ant、Maven、およびエコシステム全体に関する以前の知識を前提としています。

実用的な Gradle プロジェクトを作成するための基本的な手順は何ですか?

ここで提案されているようにディレクトリ構造を再編成しましたが、依存関係を宣言する方法がわかりません。たとえば、このbuild.gradleで

apply plugin: 'groovy'

repositories {
  mavenCentral()
}

dependencies {
  groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0'
  runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'
}

私はエラーを取得します

unable to resolve class org.apache.log4j.Level
 @ line 5, column 1.
   import org.apache.log4j.Level
   ^

リポジトリを次のように変更すると

repositories {
  mavenCentral()
  flatDir { dirs 'lib' }
}

ディレクトリから取得するには、取得log4jしますlib

A problem occurred evaluating root project 'alfred'.
Cause: Could not find method flatDir() for arguments [build_3urmo05tgpv3e97u7h8ij47i3$_run_closure1_closure3@64c7f7c4] on root project 'alfred'.
4

1 に答える 1

6

当面の問題は、log4j をコンパイル時の依存関係としてインポートする必要があることです。

修正は変更することです

runtime group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

compile group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

基本的に、実行時依存関係はコードを実行時に (リフレクション、推移的な依存関係などのために) 利用できるようにしますが、コンパイル時には利用できません。log4j に対してコンパイルする場合は、コンパイル時間が必要になります。

コンパイル時に利用できるものはすべて、実行時に自動的に利用できます。

次にやりたいことは、maven スタイルの依存関係に簡潔な構文を使用することです。

group: 'org.apache.log4j', name: 'log4j', version: '1.2.0'

次のように表現できます。'org.apache.log4j:log4j:1.2.0'

group: 'org.codehaus.groovy', name: 'groovy', version: '1.8.0'

次のように表現できます。'org.codehaus.groovy:groovy:1.8.0'

すべてをまとめると、build.gradle ファイルは次のようになります。

apply plugin: 'groovy'

repositories {
  mavenCentral()
}

dependencies {
  groovy 'org.codehaus.groovy:groovy:1.8.0'
  compile 'org.apache.log4j:log4j:1.2.0'
}
于 2012-07-17T16:30:48.427 に答える