4

現在、私たちの gradle セットアップは、ビルドが完了したときに特定の Maven リポジトリに公開するように調整されています。特定の顧客のために、jar ファイル、ライセンス ファイル、pom.xml、および ivy.xml ファイルを圧縮して、すべてを zip で送信する必要があります。これを行うには、公開する別の場所を定義する必要があります。Gradle サイトのすべてのドキュメントは、代替セットではなく、一連の公開ルールを作成することを目的としているようです。

この顧客固有の zip ファイルの構築に焦点を当てた別のタスクを単純に書きたいと思っていました。これまでのところ、すべての jar (ソースと実行可能なコードを含む) をライセンスと通知ファイルと共に収集しています。しかし、この代替タスクの一部にすぎないローカルのアイビー リポジトリとローカルの Maven リポジトリの定義については、まだ完全に理解していません。

task alt {
    dependsOn subprojects*.tasks*.matching { task -> task.name == 'assemble' }

    subprojects.each{project ->
        if (project.hasProperty('sourceJar')) {
            evaluationDependsOn(project.name)
        }
    }

    File altDir = mkdir("$buildDir/alt")
    subprojects.each { project -> 
        if (project.hasProperty('sourceJar')) {
            // Extra the module name from the path of the sub-project
            String submodule = project.projectDir.absolutePath.split(File.separator).last()
            File subfolder = mkdir(altDir.absolutePath + "/${project.group}/${group}.${submodule}/$version")
            project.tasks.withType(Jar).each {archiveTask ->
                copy {
                    from archiveTask.archivePath
                    from("$rootDir") {
                        include 'license.txt'
                        include 'notice.txt'
                    }
                    into subfolder
                }
            }
        }
    }
}
4

2 に答える 2

3

これは、pom の生成方法を説明するgradle docsです。また、そのファイルをローカル リポジトリにインストールする場合は、このブログ エントリで説明されているメカニズムを使用できます。本質的にあなたがしなければならないすべて

configure(install.repositories.mavenInstaller) {
    pom.project {
        version '1.0'
        artifactId 'your.artifact.id'
        groupId 'your.group.id'
    }
}

現時点では、gradle を介して ivy.xml を生成することはできないようですが、pom ファイルを取得したら、ivy 自体を使用して、ここで説明されている ivy ファイルを生成できます。

于 2012-06-02T12:40:44.613 に答える