0

公開リポジトリでも内部リポジトリでも利用できないいくつかのjarファイルを参照する必要があるbuild.gradleファイルを使用しています。

そのため、jar ファイルを Eclipse プロジェクトの下にある lib ディレクトリに配置しました。

dependencies {
    ...
    compile files('lib/*.jar')
}

Eclipse 内からプログラムを実行またはエクスポートする限り、これは正常に機能します。しかし、gradle buildgradle を試してみると、次のエラーで失敗します。

ファイル 'C:\Workspaces\MyProject\project\lib\*.jar' のパスを正規化できませんでした。

パスを に変更しlib\*.jar、先頭./に を追加し、 を削除しました\*.jar が、役に立ちませんでした。

依存関係から行を削除し、compile files代わりにこれをリポジトリに追加すると

repositories {
    ...
    flatDir { dirs './lib' }
}

コンパイラは について不平を言いerror: cannot find symbol、これらのシンボルはすべて lib ディレクトリから参照される jar にあります。実行するgradle --debugと、flatDir によって参照されるディレクトリが検索されていることがログからわかります。

10:02:20.587 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ResourceVersionLister] using org.gradle.internal.resource.transport.file.FileResourceConnector@48499739 to list all in /C:/...../lib/ 
10:02:20.592 [DEBUG] [org.gradle.api.internal.artifacts.repositories.resolver.ResourceVersionLister] found 7 urls

7 は、lib ディレクトリ内のファイルの数です。

これがコマンドラインからではなく、Eclipse (gradle ツールを使用した STS 3.7) で機能するのはなぜですか? 私はgradle 2.2.1と2.5の両方を試しました。

4

2 に答える 2

0

これを見つけるのに苦労したので、私自身の質問を残し、問題を解決したことを書き留めておきます。

明らかに、パスとワイルドカードを組み合わせると、コマンド ライン gradle ヒックアップを発生させる何らかの異なる動作があります。

これは、コマンド ラインで Eclipse と gradle で機能する正しい構文です。

dependencies {
    compile fileTree(dir: 'lib', include: ['*.jar'])
}

これは、最初の調査中に見つけられなかったstackoverflowに関する別の投稿から取得しました。

于 2015-07-09T08:29:56.660 に答える