Java 如何在Gradle的Maven deployer插件中使用pom文件?
我需要能够在本地生成pom文件,并将项目部署到sonatype。Java 如何在Gradle的Maven deployer插件中使用pom文件?,java,maven,gradle,build.gradle,gradle-plugin,Java,Maven,Gradle,Build.gradle,Gradle Plugin,我需要能够在本地生成pom文件,并将项目部署到sonatype。 我是这样做的: task createPom { doLast { pom.project { groupId = "com.example" //... }.writeTo("pom.xml") } } uploadArchives { repositories { mavenDeployer {
我是这样做的:
task createPom {
doLast {
pom.project {
groupId = "com.example"
//...
}.writeTo("pom.xml")
}
}
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: ossrhUsername, password: ossrhPassword)
}
pom.project {
groupId = "com.example"
//...
}
}
}
}
正如您所注意到的,它不遵循干燥原则,因为我正在两次编写相同的pom文件。如果我需要在POM文件中添加或删除任何字段,我需要在两个位置都删除它。我有个主意。我们可以说,
uploadArchives
任务依赖于createPom
任务,就像这样uploadArchives(dependsOn:createPom)
。现在我们可以生成一个POM文件,然后在使用mavenDeployer
时读取。但是如何告诉mavenDeployer
从文件中读取pom而不生成默认pom文件呢?或者,如果可以生成全局pom变量并在两个任务中使用它