2016-05-13 5 views
1

私はmavenとgradleが使用されているチームにおり、mavenユーザーがmavenを使用できるように機能するpomファイルを生成したいgradleプロジェクトがあります。Mavenプラグインを使用して生成POMのプラグインを管理します

私は次のように適切な依存関係を持つPOMを生成するものとして、これまでこの問題を解決しています

build.gradleの抜粋:

task createpom(dependsOn: 'build') << { 
    pom { 
     project { 
      groupId project.group 
      artifactId project.name 
      version project.version 
     } 
    }.writeTo("pom.xml") 
} 

build.finalizedBy(createpom) 

をこれがポンポンにだけ依存関係を作成するに適していますが、 gradleのmavenプラグインAPIは、<build>タグの内容の定義をサポートしていないようです。これは、正常なMavenビルドのために特定のプラグインをインポートする必要があります。生成されたPOMにビルドタグを後処理

  • :要するに

    は、私は、次のいずれかが必要です。私はファイルを直接操作することでそれを行うことができますが、そうしないことを好みます。

  • POMを2つの部分に分割します.1つはgradle管理の依存関係のみ、もう1つは人間が管理するものだけです。残念なことに、私はファイル名によってpom依存関係を任意に指定する方法はありません。 pomのみのプロジェクトを追加したり、マルチモジュールビルドを使用したりするソリューションはありません。どちらも共有可能な親pomまたはマルチモジュールプロジェクトは必要ありません。 <import>my/arbitrary/path/buildstuff.xml</import>に似たものを好むでしょう。本当に必要なのは、同じプロジェクト/ライフサイクルのPOMを2つに分けて接着することだけです。

私がこれまでに見つけたもの以外にもこれを達成する良い方法がありますか?

答えて

0

私は予想よりはるかにエレガントなXML調整ソリューションを使いました。

task createpom(dependsOn: 'build') << { 
    pom { 
     project { 
      groupId project.group 
      artifactId project.name 
      version project.version 
     } 
    }.withXml { 
     def templateXml = (new XmlParser()).parse('pom-unmanaged.xml') 
     asNode().append(templateXml.build) 
    }.writeTo("pom.xml") 
} 

pom-unmanaged.xmlは、典型的なポンポンの形をとり、マイナスビットというのが私:インプリメンテーションは、ビルドの人間が管理する部品を保持するために、私のプロジェクトディレクトリに管理されていないポンポンを追加し、そのように私のcreatepomタスクを修正関与しましたgradleビルドスクリプトが生成されます。

関連する問題