pdi*_*aso 6 gradle pom.xml maven
我正在使用"maven"插件将Gradle build创建的工件上传到Maven中央存储库.我正在使用类似于以下任务的任务:
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
pom.project {
name 'Example Application'
packaging 'jar'
url 'http://www.example.com/example-application'
scm {
connection 'scm:svn:http://foo.googlecode.com/svn/trunk/'
url 'http://foo.googlecode.com/svn/trunk/'
}
licenses {
license {
name 'The Apache License, Version 2.0'
url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,此任务创建的POM文件无法正确报告我的Gradle构建文件中已排除的依赖项.例如:
dependencies {
compile('org.eclipse.jgit:org.eclipse.jgit.java7:3.5.2.201411120430-r') { exclude module: 'commons-logging' }
compile('com.upplication:s3fs:0.2.8') { exclude module: 'commons-logging' }
}
Run Code Online (Sandbox Code Playgroud)
如何在生成的POM文件中正确管理排除的依赖项?
您可以通过过滤掉不需要的依赖项来简单地覆盖pom的依赖关系,例如,为了排除junit,您可以将以下行添加到mavenDeployer配置中:
pom.whenConfigured {
p -> p.dependencies = p.dependencies.findAll {
dep -> dep.artifactId != "junit"
}
}
Run Code Online (Sandbox Code Playgroud)
在 Gradle 依赖项上使用“排除”通常是正确的答案,但我仍然需要从 POM 中删除一些“runtimeOnly”依赖项,这些依赖项引导我进入此 StackOverflow 页面。我使用 Gradle 4.7 的测试似乎表明,使用“compileOnly”将依赖项完全排除在 pom 之外,但“runtimeOnly”在 pom 中添加了“运行时”依赖项,在我的情况下,这不是我想要的。我无法找出将运行时依赖项排除在 POM 之外的“标准”Gradle 方法。
另一个答案中显示的方法pom.whenConfigured适用于旧版“maven”插件发布,但不适用于较新的“maven-publish”插件。我的实验导致了“maven-publish”:
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
pom.withXml {
asNode().dependencies.dependency.each { dep ->
if(dep.artifactId.last().value().last() in ["log4j", "slf4j-log4j12"]) {
assert dep.parent().remove(dep)
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在exclude定义中没有指定组,而只指定了模块。
添加它们后,排除项就会正确添加到 POM 文件中。例如:
compile('org.eclipse.jgit:org.eclipse.jgit.java7:3.5.2.201411120430-r') {
exclude group: 'commons-logging', module: 'commons-logging'
}
compile('com.upplication:s3fs:0.2.8') {
exclude group: 'commons-logging', module: 'commons-logging'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3700 次 |
| 最近记录: |