2016-12-19 4 views
0

現在、2つのモジュールからなる既存のプロジェクトをGradleに移行して、CIの構築/テストを容易にし、プロジェクト構造を新しい従業員のためにIDEを理解しやすくなりました。隣のプロジェクトから.javaファイルを追加してGradleプロジェクトをコンパイルできません

./ProjectA 
    ./build.gradle 
    ./src 
    ... 
./Play2Project 
    ./build.sbt 
    ./src 
    ./src/entities 
    ... 

ProjectAは基本的JPA @Entityファイルの束である第二のプロジェクトから/src/entitiesを使用する:例のために、プロジェクトは2トップレベルのモジュールを含みます。

2番目のモジュールはPlay2プロジェクトです.GradleとSBTの互換性の理由から、SBTに残しておきたいと思います。残念なことに、SBTはプロジェクトルートにないファイルのソースを許可していないため、Entitiesを別のモジュールに抽出してProjectAPlay2Projectの間で共有することはできませんでした。代わりに、私は/src/entitiesをfileTreeとして追加しました。

PROJECTA/build.gradle:

apply plugin: 'java' 

sourceSets { 
    main { 
     java { 
      srcDir 'src' 
     } 
     resources { 
      srcDir 'conf' 
     } 
    } 
    test { 
     java { 
      srcDir 'test' 
     } 
     resources { 
      srcDir 'test/resources' 
     } 
    } 
} 

jar {...} 

repositories {...} 

dependencies { 
    compile fileTree(dir: "../Play2Project/src/entities", include: "**/*.java") 

    // Remote repo dependencies 
    ... 
} 

すべての依存関係が(私は私の椅子の上にジャンプ製)のIntelliJで解決するように見えた/entitiesフォルダを追加した後ここでProjectAbuild.gradleファイルです。

Error:(20, 14) java: package entities does not exist 

P.S.:エラーがEntityファイルをクラスパスに追加されていないことを示しています。しかし、私はまだどのGradleのタスクを構築、実行することはできませんよ問題がある場合、Entityファイルのヘッダーにはpackage entities;が含まれています。

答えて

0

Javaソースファイルを依存関係として追加することは意味がありません。すでに追加した「src」ディレクトリに加えて、

を呼び出して、他のソースディレクトリを追加するだけです。 srcDirメソッドを複数回呼び出すと、複数のソースディレクトリを持つことができます。

+0

私は自分の答えを入力していたのと同時に返信しました:) 私はかなり新しいStackOverflowを使用していますが、2つの答えのどちらを正しいものとしてマークする必要がありますか? –

+0

もちろん、あなたが好きなことをすることはできますが、他の回答が間違っている場合や他の人が回答していない場合は、自分の回答のみを受け入れます。 –

0

いくつかの広範な検索の後、私はついにこの問題の原因を見つけました。彼ら二人、実際にありました:

1)は、私が誤って依存関係にソースコードを追加することが当たり前()十分であろうと想定。だから、代わりにdependencies

dependencies { 
    compile fileTree(dir: "../Play2Project/src/entities", include: "**/*.java") 

    // Remote repo dependencies 
    ... 
} 

に私が依存ファイルを追加するには、この結果として、sourceSetsに追加されてきたはずです。

... 
sourceSets { 
    main { 
     java { 
      srcDirs = ['src', "../Play2Project/src/entities"] 
     } 
    ... 
} 
... 

2)私は.classを追加した場合でも、ファイルが依存関係になっていると、fileTree()が間違った結果となり、代わりにfiles()が使用されているはずです(https://discuss.gradle.org/t/getting-compile-errors-on-classes-which-exist-in-configurations-compile/1790/3参照)。

関連する問題