コンパイルして期待通りに動作するGradleプラグインがあります。私はGradleプラグインを使ったサンプルアプリケーションをソースコードとともに配布したいと思います。これはプラグインの変更を簡単にテストすることもできます。これを行うには、ブロックパスにクラスパスの依存関係を追加する必要があります。サンプルプロジェクトでコンパイルされる依存ローカルプラグインを追加することは可能ですか?私が今直面している主な問題は、サンプルプロジェクトを同期しようとしたときにプラグインが存在しないということです。ローカルプラグインをGradleプロジェクトに追加
答えて
統合テストの作成が最終的な目標である場合は、引き続きProjectBuilderを使用することをお勧めします。この例はSection 39.5.4 hereにあります。グラデルソースには、実際のテスト実装の例がたくさんあります。 See here for instance。
言われているように、私はあなたが掲示した文字通りの質問について興味があり、いくつか試しました。クラス名はその文字列を作るために'
引用符'
で囲まれていないことを
buildscript{
repositories{
...
}
dependencies{
classpath files('relative/path/to/plugin.jar')
}
}
apply plugin: fully.qualified.package.PluginClassName
注:どのような私のために仕事をしたことはこれです。
この宣言では、プラグインを使用するプロジェクトがビルドされる前にplugin.jar
をビルドして使用する必要がありますが、これはあまり有用ではありませんが、この時点では外部リポジトリの依存関係にもなる可能性があります。
これの第2の問題は、プラグインプロジェクトの推移的な依存関係がプラグインコンシューマプロジェクトに自動的に追加されないことです。
classpath project(':plugin-project')
のようなプロジェクト依存関係をビルドスクリプト内で処理することができませんでした。プラグインのプロジェクトは、プラグイン・消費者のプロジェクトを構築しながら構築し、利用可能常にであることを確実にする
ワン(非常にハック)の方法は、常に構築する前に最初のプラグインを構築する「親」build.gradleを持つことです消費者プロジェクト。 I uploaded an example here。
現在のGradleバージョン(執筆時点で3.3)では、コンポジットビルド機能を使用してプラグインの依存関係を置き換えることができます。
たとえば、あなたは(あなたの例のプロジェクトのルートで実行)以下のコマンドを使用してサンプルプロジェクトをビルドすることができます。 gradle build --include-build /path/to/local-plugin
これは、ローカルディレクトリからプラグインを拾うでしょう。それはあなたのプラグインを最初にビルドし、次にビルドされたプラグインを依存関係としてサンプルプロジェクトをビルドします。
この機能はまたのIDEでサポートされています。プラグインを代入するだけのプラグインのブロックをbuildscriptブロックで動作しますが、いないことをhttps://docs.gradle.org/current/userguide/composite_builds.html
お知らせ: Simple instructions for configuring Composite Build in IntelliJ
はこちらのドキュメントを参照してください。
私はgradle plugin
をAndroidスタジオでデバッグしたいときに、私はそれを最後に解決します。
まず、gradle plugin
をローカルのmavenにアップロードします。
apply plugin: 'java'
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile gradleApi()
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
group='com.egos.gradle.plugins'
name='plugintest'
version='0.0.1'
uploadArchives {
repositories {
mavenDeployer {
repository(url: uri('../repo'))
}
}
}
gradle uploadArchives
を実行します。次に、ローカルプラグインを使用します。
buildscript {
repositories {
maven {
url uri('../repo')
}
}
dependencies {
classpath group: 'com.egos.gradle.plugins',
name: 'plugintest',
version: '0.0.1'
}
}
apply plugin: 'com.egos'
上記の回答に追加してください。これに代えて
gradlePlugin {
plugins {
testgen {
id = "com.egos.gradle.plugins"
implementationClass = "com.egos.gradle.plugins.<PluginClassName>"
}
}
}
プラグインのクラス名を設定します。また、「uploadArchives」以下のようなものが一緒に「gradlePlugin」を追加する必要があります。 上記の回答と同じままです。ありがとう!
- 1. 追加のテストスイートをGradleに追加
- 2. gradleプロジェクトにlogbackを追加するには
- 3. アンドロイドスタジオでgradleを使用してプロジェクトにプログラムでパッケージを追加
- 4. SpringとGradle - プロジェクトにWebJars Bootstrapを追加する
- 5. Gradleプロジェクトのライブラリのルート依存関係を追加する
- 6. gradleを使ってjavaプロジェクトにネイティブ依存関係を追加するには
- 7. Gradleに表示されないIntelliJ Javaプロジェクトに外部スタティックライブラリを追加
- 8. Gulp - ローカルプラグインを削除
- 9. Gradleを使用してEclipseとIntelliJプロジェクトにフォーマッタ設定を追加
- 10. ソースをカスタムGradleプラグインに追加
- 11. application.propertiesリソースにGradleプロパティを追加
- 12. GradleからBuildConfigファイルにURLを追加
- 13. EclipseにGradleサポートを追加する
- 14. 私のプロジェクトにuber sdk gradleを追加すると、その戻り値500+コンパイルエラー
- 15. Android - gradleビルドでbitbucketからプロジェクトにテキストファイルをダウンロードして追加する方法
- 16. ObjCプロジェクトをSwiftプロジェクトに追加
- 17. プロジェクトにOkHttpを追加
- 18. Angular2 Modalをプロジェクトに追加
- 19. プロジェクトに画像を追加
- 20. TomcatプロジェクトにJarを追加
- 21. gradleプロジェクトをリモートサーバにデプロイ
- 22. のGradleでライブラリを追加twilioチャットライブラリ
- 23. Eclipse Gradleでクラスパスエントリを追加する
- 24. 隣のプロジェクトから.javaファイルを追加してGradleプロジェクトをコンパイルできません
- 25. メッセージングページでカスタマイズするローカルプラグイン
- 26. GrailsプロジェクトとJava WebプロジェクトをEARプロジェクトに追加
- 27. Gradle:依存関係の追加
- 28. イオンアンドロイドビルドのダウンロードのGradle毎回追加プラットフォーム
- 29. SVNにプロジェクトを追加するには?
- 30. ユニットを自動的にプロジェクトに追加
プラグインの使い方を示すサンプルプロジェクトの場合、またはプラグインの統合テストの一種ですか?それが前者の場合は、jcenterまたはgradle plugins portal repoのプラグインに依存しないのはなぜですか?なぜそれはローカルのプラグインプロジェクトに依存しなければならないのですか? – RaGe
統合テストの場合は、実際には[ProjectBuilder](https://docs.gradle.org/current/javadoc/org/gradle/testfixtures/ProjectBuilder.html)の方法にする必要があります – RaGe
ちょうど統合テスト、それは私が達成しようとしている最終的なものです。私はこのProjectBuilderをチェックアウトし、それがどのように行くのかを報告します、ありがとう。 – Bobbake4