1

次のようなディレクトリ構造で、Javaソースとclojureのソースコードを含むプロジェクトをビルドしようとしています。

src
`-- main
    |-- clojure
    |   `-- appc
    |       `-- core.clj
    `-- java
        `-- appj
            `-- AppStarter.java

javaclojureおよびapplicationプラグインをgradleビルドファイルにロードしました。Clojureプラグインは、https: //bitbucket.org/kotarak/clojuresque/overviewバージョン1.5.2からのものです。

ここで、clojureコードはcore.clj、javaで記述されたクラスを使用するコードを持っています。しかし、clojureコードに依存するjavaソースには何もありません。

今、私がするときgradle tasks --all、私は見る

...
classes - Assembles the main classes.
    compileClojure - Compile the main Clojure source.
    compileJava - Compiles the main Java source.
    processResources - Processes the main resources.
...

したがって、buildタスクは最初にclojureソースをコンパイルし、次にjavaソースをコンパイルします。clojureコードはjava部分に依存しているため、これは明らかに機能しません。だから私はcompileJava前に起こる必要がありcompileClojureます。

clojureおよびプラグインの適用順序を変更しjavaても効果はありませんでした。

groovyclojureプラグインは新しいので、とプラグインを試してみましたscala。いずれの場合も次のようになりました。

...
classes - Assembles the main classes.
    compileGroovy - Compile the main Groovy source.
    compileJava - Compiles the main Java source.
    processResources - Processes the main resources.
...

...
classes - Assembles the main classes.
    compileJava - Compiles the main Java source.
    compileScala - Compile the main Scala source.
    processResources - Processes the main resources.
...

これらの権利を並べ替える方法があるはずだと思いますか?私はドキュメントで見つけることができませんでした(それらが本当に良いにもかかわらず!)。最初にJavaソースビルドをコンパイルしてから、clojureソースをコンパイルするようにgradleに指示する方法はありますか?

4

1 に答える 1

3

注文を正しく行うのは簡単compileClojure.dependsOn(compileJava)です。もう1つの質問は、JavaクラスがClojureコンパイラーのクラスパスに正しく配置されているかどうかです。

PS:gradle tasks出力のタスクの順序は、タスクが実行される順序については何も示していません。タスクの実行順序は、タスクの依存関係によって完全に決定されます。

于 2012-10-15T16:11:08.123 に答える