Gradle - 生成没有依赖关系的pom

时间:2013-06-24 16:13:32

标签: maven gradle pom.xml

我想生成一个不包含依赖项的pom文件。我已经尝试使用下面的代码清除依赖项,但依赖项仍然列在生成的pom中。

install.doFirst {
    repositories.mavenInstaller {
        pom.dependencies.clear()
    }
}

为什么我需要这个:当我将它上传到“家庭酿造”服务时,我需要一个pom文件包含在我的jar中,但是当它读取“+”时服务会爆炸依赖项的版本(我正在使用动态依赖项)。

2 个答案:

答案 0 :(得分:7)

uploadArchives {
    repositories {
        mavenDeployer {
            // Do not write any dependencies into the POM
            pom*.whenConfigured { pom -> pom.dependencies.clear() }                 
        }
    }
}  

答案 1 :(得分:0)

我最终使用以下解决方案调用gradle cleanPom。基本上我使用XML解析器来编辑生成的POM。

apply plugin: 'maven'

pomFileLocation="build/poms/noDeps.pom"

/**
 * Creates pom with dependencies
 */
task writeNewPom << {
    pom {}.writeTo(pomFileLocation)
}

/**
 * Reads and Overwrites POM file removing dependencies
 */
task cleanPom(dependsOn: writeNewPom) << {
    def xml = new XmlParser().parse(pomFileLocation)
    def nodes = []
    xml.dependencies[0].each {
        nodes.add(it)
    }
    def parrent = nodes.first().parent()
    nodes.each {
        parrent.remove(it)
    }
    new XmlNodePrinter(new PrintWriter(new FileWriter(pomFileLocation))).print(xml)
}