我需要能够在本地生成pom文件并将项目部署到sonatype。
以下是我的表现:
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"
//...
}
}
}
}
正如您所注意到的那样,它不符合DRY原则,因为我正在写两次相同的pom文件。如果我需要添加或删除POM文件中的任何字段,我需要在两个地方删除它
我有个主意。我们可以说uploadArchives
任务取决于此createPom
uploadArchives (dependsOn: createPom)
任务。现在我们可以生成一个POM文件,然后在使用mavenDeployer
时读取。但是如何告诉mavenDeployer
从文件中读取pom而不生成默认的pom文件?或者,如果可以生成全局pom变量并在两个任务中使用它。