問題タブ [gradle-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3764 参照

gradle - タスクによって動的に設定されたプロパティを Gradle 拡張機能に遅延評価させるにはどうすればよいですか?

私は Gradle を使用するのが初めてで、バージョン番号の管理に役立つプラグインを開発しようとしています。このプラグインは、project.version適用先のプロジェクトのプロパティを設定するタスクを定義します。

私がやろうとしているのは、このプロパティがすべての Gradle ビルドの開始時に設定されるようにすることです。別のGradleの質問に対するPeterの回答を使用しgradle.startParameter.taskNames = [":setProjectVersionNumber"] + gradle.startParameter.taskNamesて、プラグインのapplyメソッド内に追加することで、タスクを他のタスクよりも先に実行することができました。

ただし、他のプラグイン (特に「Maven-publish」) は、構成フェーズで指定されているバージョンに依存しています。

私が知りたいのは、versionこれらの拡張機能内のようなプロパティの評価を可能な限り遅延させる方法があるかどうかです。この場合、それらに依存するタスクが呼び出されるまで評価されません。かもしれません:publishToMavenLocal

以下は、私が達成したいことを示す SSCCE です。

ext.version上記の例で同等にする方法を提供できれば1.2.3、私の問題は解決したと思います。

これがあまりにも多くのことを要求している場合は、実行時ではなく構成時にプラグインにバージョン文字列を生成させることができるかもしれません。でも、このようにできるかどうかを知っておくといいでしょう。

編集

実験的なブランチで、すべてのバージョン文字列の割り当てロジックを構成フェーズに移動しようとしました (タスクの実行中ではなく、プラグインの適用中にすべてを実行することによって) が、プラグインの拡張機能が機能していないため、これが機能するとは考えていません。まだ処理されていないため、その中で定義されたプロパティを参照しようとすると失敗します。

編集2

バージョン文字列の割り当てロジックをproject.afterEvaluateクロージャーでラップすると、うまくいったようです。

モック プロジェクトでは、次のように実装build.gradleします。

何らかの理由で、これはうまくいくようです。バージョン文字列の割り当てロジックは 'afterEvaluate' クロージャーでラップされ、テスト パブリケーションのバージョン割り当てはそうではありませんが、前者は後者の前に発生します。

当初の意図どおりにできるかどうか知りたいので、この質問は未解決のままにしておきます。さらに、プロジェクト バージョンが設定された後にパブリケーション バージョンが割り当てられる理由と、それが常に当てはまるのか、それとも偶然に起こっているのかについて、説明をいただければ幸いです。

0 投票する
2 に答える
5443 参照

groovy - 特定のサブプロジェクトでのみ Gradle ShadowJar プラグインを実行する

注:myapp-serverDropWizard アプリですが、これは厳密にはGradleに関する質問です。適切な測定のために、DropWizard についてのみ言及します。

Gradle でビルドしているマルチプロジェクト ビルドがあります。

settings.gradleのようになります。

Gradle で Groovy ソース コードをコンパイルし、単体テストを実行し、GroovyDocs を生成し、3 つのサブプロジェクトすべてのバイナリ JAR とソース JAR の両方をパッケージ化することに成功しました。ビルドの呼び出し: gradle clean build groovydoc sourcesJar -Pversion=<whatever version I specify>.

myapp-server実際には、Shadow JAR プラグインを実行する必要があるプロジェクトであり、通常介し​​て実行されgradle clean build shadowJarます。

これが私のものmyapp-server/build.gradleです:

私の質問:サブプロジェクトでのみタスクを実行し、他のプロジェクトでは実行しないように Gradle を構成するにはどうすればよいですか? shadowJarmyapp-server理想的には、ビルド呼び出しを次のようにすることができます。

そして、どういうわけか、Gradle を除くshadowJarすべての実行を無視するように構成します。アイデア? myapp-server


アップデート

実行するgradle clean build groovyDoc sourceJar shadowJar -Pversion=0.1.3と、次で終わる一連の Gradle 出力が表示されます。

ただし、ドリルダウンしmyapp-server/build/libs/myapp-server-0.1.3.jarて開くと (ZIP のように抽出します)、コンパイルされたクラスのみが表示され、依存するすべての JAR のすべてのクラスは表示されません (「Fat JAR」である必要があります)。たとえば、myapp-serverDropWizard に依存します。すべての DropWizard クラスは、この JAR 内にある必要があります。DropWizard のすべての推移的な依存関係には、この JAR 内にクラス ファイルが含まれている必要があります。

0 投票する
1 に答える
582 参照

groovy - 単一の Gradle ビルド呼び出しから実行可能な JAR をパッケージ化して実行しますか?

これが私のGroovyアプリのドライバークラスです:

次のことができるように、Gradle ビルドを拡張しようとしています。

  1. 実行可能 JAR に Gradle パッケージを追加します。と
  2. 実行可能な JAR を実行し、コマンド ライン引数をそのメイン メソッドに渡します

理想的には、次の方法でアプリを簡単に実行できます。

次のコンソール出力を参照してください。

これが私のものbuild.gradleです:

Gradle パッケージ + このようにアプリを実行できるようにするには、どうすればよいですか?

0 投票する
5 に答える
4517 参照

java - Java Gradle API の Maven 依存関係パラメーターは何ですか?

私はJavaでGradleプラグインを書いています。開発 (特にコード補完) に IDE を使用するには、クラスpom.xmlの依存情報をプロジェクトのファイルに追加する必要があります。org.gradle.api.*

どこで見つけることができますか?

mvnrepository.comを試しましたが、見つかりませんでした。

0 投票する
1 に答える
2062 参照

gradle - gradle プロジェクト ディレクトリから jacoco exec ファイルを作成する

execカスタムgradleプラグインから、jacocoファイルの場所をプロジェクトディレクトリの外に変更するにはどうすればよいですか。プラグインに以下のコードがあります:

しかし、テストを実行すると、.execファイルは次の場所に生成されます<projectDir>/jacoco/<taskName>.exec

destinationFileディレクトリの値を変更すると、build.gradle完全に正常に動作します。

ここで何が欠けていますか?

編集:プラグインの完全なコードはこちら

0 投票する
0 に答える
344 参照

java - Gradle で Android アプリをビルドするときの OutOfMemoryError

ジェンキンスでAndroidアプリを構築しようとしています。ほとんど同じ構成のかなりの VM があります (少なくとも RAM の量は同じです) が、そのうちの 1 つがこれを返しています:

さて、この dx ビルド ツールに 1GB 以上を提供する必要があると思いますが、どうすればそれを行うことができますか? -XmxオプションをGradleに渡して代わりに使用するにはどうすればよい-JXmx1gですか?

0 投票する
1 に答える
1330 参照

gradle - コピー タスクを依存関係として既存の Gradle タスクに追加する

次のディレクトリ構造を持つ Groovy アプリがあります。

現在、実行するとgradle clean build shadowJarShadowJar プラグインを使用します が、ここでは関係ないと思います)、コンパイル済みの実行可能 JAR が の中にありbuild/distributionsます。理想的には、ビルドの呼び出しを変更することなく、src/main/resources/config.jsonファイルをこの場所にコピーするタスクを Gradle ファイルに追加したいと考えています。build/distributions

私はこれを試しました:

ただし、これにより、次のビルド呼び出しを使用する必要があります: gradle clean build shadowJar copyJson、これは私が望むものではありません。

だから私は尋ねます:どのように私のGradleビルドにタスクを追加してgradle clean build shadowJar、実行すると実行可能なJARが下に生成されるだけでなく、その場所にもファイルbuild/distributionsがコピーされるようにするにはどうすればよいですか?src/main/resources/config.json

0 投票する
0 に答える
1209 参照

android - Gradle プラグインを使用して android.defaultConfig に関数を追加するには?

Android Gradle プラグインに機能を追加する Gradle プラグインを作成したいと考えています。getGreetingここで概説されているような機能を追加したいのですandroid.defaultConfigが、プラグインを介して:

Groovy プロジェクト全般の準備を開始しました。今、私はこの時点にいます:

Groovy を使用したことがないので、クラスにデバッグする方法さえ知りません。android.defaultConfigコメント行は、ブロックにアクセスする方法である可能性があります。そこに機能を追加するにはどうすればよいですか?