web-dev-qa-db-ja.com

Gradle build.gradleからMaven pom.xmlへ

Gradleプロジェクトがあり、その依存関係をすべて転送して別のMavenプロジェクトで使用する必要があります。言い換えれば、build.gradleからpom.xmlをどのように生成(または生成)できますか?

51
htm01

最も組み込まれているソリューションは、MavenプラグインのarchiveTaskタスクを使用することです。これにより、ビルドディレクトリのpomsフォルダーにpomが生成されます。 http://www.gradle.org/docs/current/userguide/maven_plugin.html#sec:maven_pom_generation

12
Matt Whipple

GradleのMavenプラグイン を使用すると、installタスクがタスクに自動的に追加され、それを呼び出すと常にPOMファイルが生成されます。

したがって、build.gradleファイルは次のようになります。

apply plugin: 'Java'
apply plugin: 'maven'

group = 'myGroup'
// artifactId is taken by default, from folder name
version = '0.1-SNAPSHOT'

dependencies {
  compile 'commons-lang:commons-lang:2.3'
}

そのフォルダーでgradle installを呼び出すことができます。build/pomsサブフォルダーにあるファイルpom-default.xml依存関係が含まれます。また、ビルドされたJARとPOMはMavenローカルリポジトリにあります。

61
csaba.sulyok

ローカルリポジトリに何もインストールしたくないので、代わりにドキュメントを読んでから次のようにしました。 build.gradleに追加します

apply plugin: 'maven'

group = 'com.company.root'
// artifactId is taken by default, from folder name
version = '0.0.1-SNAPSHOT'

task writeNewPom << {
    pom {
        project {
            inceptionYear '2014'
            licenses {
                license {
                    name 'The Apache Software License, Version 2.0'
                    url 'http://www.Apache.org/licenses/LICENSE-2.0.txt'
                    distribution 'repo'
                }
            }
        }
    }.writeTo("pom.xml")
}

実行するにはgradle writeNewPom

@名のない馬

groovyで作成されたgradleは、終了後に追加しようとすることができます}プロジェクトブロック

build{
  plugins{
    plugin{
      groupId 'org.Apache.maven.plugins'
      artifactId 'maven-compiler-plugin'
      configuration{
          source '1.8'
          target '1.8'
      }
    }
  }
}

試みなかった、ワイルドな推測!

18
dilbertside

Gradleがインストールされていない場合、「これを行うgradleタスクを作成する」はあまり使いやすいものではありません。

cat build.gradle\
| awk '{$1=$1};1'\
| grep -i "compile "\
| sed -e "s/^compile //Ig" -e "s/^testCompile //Ig"\
| sed -e "s/\/\/.*//g"\
| sed -e "s/files(.*//g"\
| grep -v ^$\
| tr -d "'"\
| sed -e "s/\([-_[:alnum:]\.]*\):\([-_[:alnum:]\.]*\):\([-+_[:alnum:]\.]*\)/<dependency>\n\t<groupId>\1<\/groupId>\n\t<artifactId>\2<\/artifactId>\n\t<version>\3<\/version>\n<\/dependency>/g"

これは変換します

compile 'org.slf4j:slf4j-api:1.7.+'
compile 'ch.qos.logback:logback-classic:1.1.+'
compile 'commons-cli:commons-cli:1.3'

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.+</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.+</version>
</dependency>
<dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.3</version>
</dependency>

残りのpom.xmlは手動で作成する必要があります。

12
andrej