私はSpring's dependency management pluginを使って依存バージョンのリストを定義するGradleプロジェクトを持っています。また、私はMaven pluginを使ってプロジェクトをMavenリポジトリにデプロイしています。Nexusに配備するGradle Mavenプラグインを使用してMaven POM-only(BOM)ビルドを作成できますか?
これを他のGradleプロジェクトで使用して依存関係のバージョンを定義できるように、これをMaven部品表(BOM)として展開したいと考えています。私はJARファイルを展開している限り、これを動作させることができました。しかし、JARは完全に空で余分です。私の目標は、POMファイルだけを生成して配備することです。これは、これが "pom"パッケージのMavenプロジェクトであれば可能です。
パブリッシュするアーティファクトのリストからJARを手動で除外すると、POMファイルでさえインストールされません。
これは、問題を実証するためのテストビルドです:
group 'test'
version '1.0.0-SNAPSHOT'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.1.RELEASE' //Matches the Spring IO version
}
}
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'maven'
dependencyManagement {
dependencies {
dependency 'cglib:cglib-nodep:3.2.4'
dependency 'junit:junit:4.12'
}
}
////Uncommenting this causes nothing at all to be deployed:
//jar.enabled = false
//configurations.archives.artifacts.with { archives ->
// archives.removeAll { it.type == 'jar' }
//}
上記は正しく私の地元のMavenリポジトリに次のPOMファイルを生成し、インストールします。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>gradle-pom-packaging-test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
しかし、それはまた、AインストールMANIFEST.MFファイルのために空のJARファイルを保存します。
maven-publish
プラグインを使用して正常に動作しました。しかし、私はGradle Sonatype Nexus pluginを使ってアーティファクトをNexusインスタンスに公開しています。これはmaven
プラグインをベースにしているため、maven-publish
プラグインは私のニーズに対応していません。生成し、私があれば行うことができるようになるように、maven
のGradleプラグインを使用してちょうどPOMファイルをデプロイする方法はあり
apply plugin: 'maven-publish'
publishing {
publications {
maven(MavenPublication) {
}
}
}
:以下は、私はそれがmaven-publish
プラグインで作業を取得するために追加するために必要なすべてのですこれは "pom"パッケージのMavenプロジェクトでしたか?あなたが部品表にGradleの道作成するDSL持っているプラグインを検討すべきである
は、より一般的には、これは標準のMaven-公開プラグインの機能強化(拡張機能です私はPOMのdependencyManagementセクションを生成するためにSpring依存関係管理プラグインが必要なので、実際には必要ではありません。また、それは、オプションの/提供されているgradle-pom-pluginのようなものです。私はオープニングの質問には言及しなかった出版{ 出版物{ 達人(MavenPublication){ } } } ' –
ことの一つは、私は「ということです'追加することで、これはのmaven-公開プラグインで動作するように手に入れましたまた、[Gradle Sonatype Nexus plugin](https://github.com/bmuschko/gradle-nexus-plugin)を使用して、アーティファクトを自分のネクサスリポジトリ(主にrepositoryUrl/snapshotRepositoryUrl機能用)に公開します。これは 'maven'プラグイン機能を利用しているので、' maven-publish'や 'ru.vyarus.pom'を使うとうまくいきません。アーティファクトを設定してアップロードするのに別の仕組みを使います。私はそれに応じて私の質問を更新します。 –