46

私の仕事ではMavenを使用しています。初めてgradleをやってみます。一般的に使用される maven プラグインの設定といくつかの一般的な依存関係を持つすべてのプロジェクトに共通の親 pom を使用します。gradle で利用できる同様のオプションはありますか?

2 つ目の質問は、リリース管理に関するものです。私たちはMavenリリースプラグインを使用しています。これは私たちにとって非常にうまく機能します。Gradleで利用できる同様のものはありますか?

4

7 に答える 7

32

同じビルドの複数のプロジェクト内で共有するにはallprojects { ... }、 、 などを使用します。また、親プロジェクトで宣言されたsubprojects { ... }追加のプロパティ ( ) は、サブプロジェクトで表示されます。一般的なイディオムは、トップレベルのビルド スクリプトに次のext.foo = ...ようなものを含めることです。ext.libs = [junit: "junit:junit:4.11", spring: "org.springframework:spring-core:3.1.0.RELEASE", ...]サブプロジェクトは、短い名前で依存関係を選択的に含めることができます。詳細については、Gradle Forumsを参照してください。

ビルド間でロジックを共有するには、スクリプト プラグイン ( foo.gradle) を記述し、それを Web サーバーに配置して を使用してビルドに含めるapply from: "http://..."か、バイナリ プラグイン ( を実装するクラスorg.gradle.api.Plugin) を記述して、Jar としてリポジトリに公開します。 、およびセクションを使用してビルドに含めapply plugin: ...ますbuildscript {}。詳細については、Gradle ユーザー ガイドと、完全な Gradle ディストリビューションに含まれる多くのサンプルを参照してください。

スクリプト (バイナリではない) プラグインの現在の制限は、キャッシュされないことです。したがって、ビルドは、プラグインを提供している Web サーバーに接続できる場合にのみ成功します。

2 番目の質問 (別の質問にする必要がありました) については、https://github.com/townsfolk/gradle-releaseなど、利用可能なサードパーティ リリース プラグインがいくつかあります。

于 2013-03-18T08:23:32.743 に答える
14

io.spring.dependency -managementプラグインを使用すると、Maven bom を使用してビルドの依存関係を制御できます。

buildscript {
  repositories {
    mavenCentral()
  }
  dependencies {
    classpath "io.spring.gradle:dependency-management-plugin:0.5.3.RELEASE"
  }
}

apply plugin: "io.spring.dependency-management"

次に、これを使用して Maven bom をインポートできます。

dependencyManagement {
  imports {
    mavenBom 'io.spring.platform:platform-bom:1.1.1.RELEASE'
  }
}

バージョン番号を指定せずに依存関係をインポートできるようになりました。

dependencies {
  compile 'org.springframework:spring-core'
}
于 2015-11-04T22:23:31.107 に答える
2

Mavenの親pomのようなことをする最善の方法は、gradleの「適用元」を使用することだと思います。
このようなもの:</p>

allprojects { // or: subprojects { ... }
    apply from: "gradle/script/common.gradle"
}

リンクは、関連するパスまたは URL です。それが役に立てば幸い。

参考:
Gradleスクリプトをルートからサブプロジェクトにインポートする
Super POM、Parent POMのGradleでの階層管理タイプ

于 2015-05-28T06:41:15.773 に答える
1

親の pom コンテンツを Gradle init ファイルに簡単に変換できます。Gradle init スクリプトは、Maven スーパー/親 pom と同じ機能を提供します。基本的な違いは、init スクリプトを呼び出すことができることです。

実行時 できるだけ多く これにより、
実行時に init スクリプトを変更する柔軟性が得られますが、変更を追跡しない可能性があります。

リポジトリ、配布管理、プロファイリング、および findbugs、checkstyle などのその他のチェックを init スクリプトに取り込む必要があります。

詳細は膨大です。ここで完全な情報を見つけることができます。 http://www.scmtechblog.net/2015/12/how-to-migrate-parent-pom-from-maven-to.html

mavenリリースプラグインに似たgradleリリースプラグインについて説明しました。

于 2015-12-30T11:38:52.343 に答える
1

私もこのタイプの機能が欲しかったので、これを提供するプラグインを作成しました: https://github.com/boxheed/gradle-pater-build-plugin

于 2015-02-09T21:59:15.923 に答える
0

目標を達成するには、ここのgradelユーザーガイドで説明されている「マルチプロジェクトビルド」の概念を適用できます

基本的に、gradle.build ファイルと gradle.settings ファイルを作成することで、一連の共通構成を定義する包括的なプロジェクトを作成できます。ビルド ファイルには、すべてのプロジェクトに共通するプロパティ、依存関係、およびプラグインが含まれています。settings.gradle は、これらの構成を継承するサブプロジェクトを定義します。

さらに、gradle プラグインのエコシステムを理解するには、このソースを確認してください。

于 2013-03-18T13:49:12.800 に答える
0

親をローカルにキャッシュして Maven リポジトリに保存する場合は、現時点では不可能です。

ここに機能リクエストを追加しました: http://forums.gradle.org/gradle/topics/support_for_gradle_parent_shared_between_projects_cached_locally

于 2014-06-03T13:20:46.840 に答える