gradle - 转换为 gradle-kotlin-dsl Jfrog.Artifactory 配置
问题描述
我正在尝试从 groovy 迁移到 gradle-kotlin dsl,但我是新手,所以我不知道如何配置 Jfrog Artifactory。请帮助我将该部分代码转换为 gradle-kotlin dsl:
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
artifactory {
contextUrl = "http://10.0.0.49:8081/artifactory"
publish {
repository {
repoKey = 'gradle-dev-local'
username = artifactory_username
password = artifactory_password
}
defaults {
publications('mavenJava')
publishArtifacts = true
publishPom = true
}
}
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId = "ua.tiras.oloader"
artifactId = 'core'
version = "1.0.62"
artifact("$buildDir/libs/${project.getName()}.jar")
artifact sourceJar {
classifier "sources"
}
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.api.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}
}
}
}
解决方案
我是这样解决的:
val sourcesJar by tasks.creating(Jar::class) {
dependsOn(JavaPlugin.CLASSES_TASK_NAME)
classifier = "sources"
from(sourceSets["main"].allSource)
}
publishing {
publications {
create<MavenPublication>("mavenJava") {
groupId = "ua.tiras"
artifactId = "aloader-core"
version = "0.0.4"
artifact(sourcesJar)
artifact("$buildDir/libs/${project.name}.jar")
pom {
withXml {
asNode().appendNode("dependencies").let {
for (dependency in configurations["api"].dependencies) {
it.appendNode("dependency").apply {
appendNode("groupId", dependency.group)
appendNode("artifactId", dependency.name)
appendNode("version", dependency.version)
}
}
}
}
}
}
}
}
artifactory {
setContextUrl("http://dev.tirascloud.com:8081/artifactory")
publish(delegateClosureOf<PublisherConfig> {
repository(delegateClosureOf<GroovyObject> {
setProperty("repoKey", "gradle-dev-local")
setProperty("username", project.findProperty("artifactory_username") ?: "nouser")
setProperty("password", project.findProperty("artifactory_password") ?: "nopass")
})
defaults(delegateClosureOf<GroovyObject> {
invokeMethod("publications", "mavenJava")
setProperty("publishPom", true)
setProperty("publishArtifacts", true)
})
})
resolve(delegateClosureOf<ResolverConfig> {
setProperty("repoKey", "repo")
})
推荐阅读
- python-3.x - ModuleNotFoundError:没有名为“mysite.myapp”的模块
- fpga - Chisel3 REPL peek 值正确,但预计测试失败
- netty - 如何控制用于读取的缓冲区网络?
- git - 如何删除 git 终端上显示的未跟踪更改和已删除文件
- javascript - 有没有办法使用反应将 html 元素从 div 移动到另一个 div?
- php - 子域作为 .htaccess 中的参数,而 php 不起作用
- intellij-idea - intellij 控制台抑制终端中的警告
- javascript - 如何在无需单击的情况下确定鼠标位置是否与图像相同?JS
- c# - TMPro 是一个命名空间,但用作 Unity 类型
- flutter - 在 Flutter 中运行 GLSL 着色器