huz*_*uzi 3 release repository gradle
我想将我的工件上传到远程Nexus仓库.因此,我在Nexus中配置了snaphot和release repo.部署到两个工作.
现在我想配置我的构建,以便我可以决定要部署哪个repo:
gradle uploadArchives 应该部署到我的快照仓库gradle release uploadArchives 应该部署到我的发布回购这是我的尝试:
apply plugin: 'war'
apply plugin: 'maven'
group = 'testgroup'
version = '2.0.0'
def release = false
repositories {
mavenCentral()
mavenLocal()
}
dependencies{ providedCompile 'javax:javaee-api:6.0' }
task release <<{
release = true;
println 'releasing!'
}
uploadArchives {
repositories {
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/releases"){
authentication(userName: "admin", password: "admin123")
}
addFilter('lala'){ x, y -> release }
}
mavenDeployer {
repository(url: "http://.../nexus/content/repositories/snapshots"){
authentication(userName: "admin", password: "admin123")
}
addFilter('lala'){ x, y ->!release}
pom.version = version + '-SNAPSHOT'
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我注释掉两个mavenDeployer配置中的一个,那么构建就有效,但不能作为一个整体.
有关如何在一个构建文件中配置两个目标存档的任何想法?
一种解决方案是添加一个if-else语句,根据具体情况添加两个部署者中的一个.例如:
// should defer decision until end of configuration phase
gradle.projectsEvaluated {
uploadArchives {
repositories {
mavenDeployer {
if (version.endsWith("-SNAPSHOT")) { ... } else { ... }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您确实需要根据某个任务是否"存在"来改变配置,您可以根据gradle.startParameter.taskNames(但之后只捕获作为Gradle调用的一部分指定的任务)做出急切的决定,或者使用gradle.taskGraph.whenReady回调(而不是gradle.projectsEvaluated)并检查任务是否被安排执行.
如果我错了,请纠正我,但在这种情况下你不应该使用单独的snapshotRepository(而不是if语句)?例如,
mavenDeployer {
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
authentication(userName: sonatypeUsername, password: sonatypePassword)
}
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
authentication(userName: sonatypeUsername, password: sonatypePassword)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4442 次 |
| 最近记录: |