2017-03-06 6 views
2

私はこのような構造のプロジェクトがあります。gradleを使って、ローカルジャーからの依存関係だけをコンパイルする方法を教えてください。

MainProject 

| 
|---- ExampleModule 
|   \-src 
|   \-libs 
|    \-LibraryModule-0.1.jar 
| 
|---- LibraryModule (from existing source) 

私は、これらのタスクを実行buildscriptを持っている:

  1. ビルドは/ LibraryModule
  2. をコンパイルするには、/ destinationDirとjarファイルがExampleModule/LIBSに設定してください
  3. assemblyModuleは、LibraryModule-0.1.jarに依存します。
  4. run

これは単純ですが、このローカルjarで提供されているcompileOnly /を使用する必要があることを除けば、ランタイム依存性ではないので簡単です。私のExampleModuleのbuild.gradleファイルにそれをどのように書きますか?

これは私が現在持っているものです:ローカルのjarファイルについては

dependencies { 
    compileOnly 'libs:LibraryModule-0.1.jar' 
} 
+2

https://blog.gradle.org/introducing-compile-only-dependencies絶対に間違っています。注釈プロセッサはどのように機能していると思いますか? –

+1

@PrestonGarnoは人々の間違ったコメントに興奮することはありません。あなたが落ち着いて、ここでやったように答えてみると、人々はあなたをプロとして認識します。私があなただったら、私は最後のコメントを削除し、答えを発表します! – alfasin

+0

@alfasin良い点、私は、それほど努力していないコメントを呼び出すことは良いと思うが、私が個人的に知っている十分な開発者は、まさにその理由のためにここで活発ではない。 –

答えて

2

を、ちょうどmavenCentralまたはjcenterから任意の依存関係のように、あなたはjarファイル名の末尾にバージョン番号を持っている場合、それは表現する必要があります私は私のjarファイルを命名していた場合は、その 'LibraryModule.jar'、単に

compileOnly 'libs:LibraryModule' 
を入れ

compileOnly 'libs:LibraryModule-build:0.1' 

注:そうのような10

が働いていました。

注 - 注釈処理ツールを開発するためにプロジェクトでgradleを使用している場合、またはコンパイル時にのみ依存するその他のものを作成する場合は、gradle-apt-pluginを使用することをお勧めします。また、here is an informative page in the gradle official repo about current support for annotation processors.

+1

回答を公開していただきありがとうございます。関連性の高いオンラインリソースへのリンクを追加することもできます。 – alfasin

+1

@alfasin興味深いことに、私はそれについてオンラインで何かを見つけられませんでした。おそらく、コンパイル時にローカルジャーとの依存関係のみがメタプログラミングライブラリを開発するための唯一のユースケース(私が考えることができる)であり、java&gradleに関する注釈が非常によく書かれているわけではないでしょうJDK 1.6+が含まれていると私は信じており、gradleはこれを正式にはサポートしていません)。私は、正規表現や構文解析のためのグラデーションの背後にあるものを説明するために、jarファイル名を単純な文字列に切り捨てることにした後で、それを理解しました。 –

関連する問題