2013-06-24 61 views
2

我想生成一個不包含依賴關係的pom文件。我已經嘗試使用下面的代碼清除依賴項,但依賴項仍列在生成的pom中。Gradle - 生成沒有依賴關係的pom

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

爲什麼我需要這樣的:我需要一個POM文件將包含在我的罐子,當我把它上傳到了「自家釀製的」服務,但該服務鼓起時,它讀取「+」作爲版本的依賴關係(我正在使用動態依賴)。

+0

您是否嘗試過清除的配置呢? –

+0

@JoshGagnon我該怎麼做? –

+0

我不知道它是否會起作用(因此僅僅是評論),但'configurations.compile.clear()'可能是值得一試的,儘管它聽起來超級駭人。您可能會在這裏閱讀第65.2.4節:http://www.gradle.org/docs/current/userguide/publishing_maven.html並嘗試。 –

回答

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) 
} 
7
uploadArchives { 
    repositories { 
     mavenDeployer { 
      // Do not write any dependencies into the POM 
      pom*.whenConfigured { pom -> pom.dependencies.clear() }     
     } 
    } 
} 
+0

這應該是新的正確答案。 –