在项目开发完毕后,publish Maven时,如果我们项目依赖了三方的包,那么我们需要在Pom中指定依赖的项目,那么我们有两种方式可以实现:
第一种:使用 MavenPublication 中的from components.java (java项目),components是一个集合,components.java类似一个Configuration
第二种:使用 MavenPublication pom.withXml
第一种方式
1 2 3 4 5 6 7 8 9 10 11 12 13
| afterEvaluate { publishing { publications { bundle(MavenPublication) { pom components.debug } } repositories { mavenLocal() } } }
|
第二种方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| publishing { publications { song(MavenPublication) { artifactId = 'pom_demo' pom.withXml {
org.gradle.api.artifacts.DependencySet dependenciesSet = project.getConfigurations().getByName('releaseRuntimeClasspath').getIncoming().getDependencies() if (dependenciesSet.isEmpty()) { return } Node dependenciesNode = it.asNode().appendNode('dependencies') dependenciesSet.all {
if (it instanceof ModuleDependency) { Node dependencyNode = dependenciesNode.appendNode('dependency') dependencyNode.appendNode('groupId', it.group) dependencyNode.appendNode('artifactId', it.name) dependencyNode.appendNode('version', it.version)
if (!it.transitive) { Node exclusionsNode = dependencyNode.appendNode('exclusions') Node exclusionNode = exclusionsNode.appendNode('exclusion') exclusionNode.appendNode('groupId', '*') exclusion.appendNode('artifactId', '*') } else if (!it.getExcludeRules().isEmpty()) { Node exclusionsNode = dependencyNode.appendNode('exclusions') for (org.gradle.api.artifacts.ExcludeRule rule : it.getExcludeRules()) { Node exclusionNode = exclusionsNode.appendNode('exclusion') exclusionNode.appendNode('groupId', rule.group) exclusionNode.appendNode('artifactId', rule.module) } } it.artifacts?.each { if (it.type != null) { dependencyNode.appendNode('type', it.type) } if (it.classifier != null) { dependencyNode.appendNode('classifier', it.classifier) } } }
} }
} }
repositories { mavenLocal() } }
|