我有一个发布到Maven的多平台kotlin库项目,并且已经更新到kotlin 1.3多平台模型和kotlin-dsl
以前的groovy gradle脚本有一个ModifyPom块,我发现了一个example here。但是,一旦我添加
val modifyPom : Closure<*> by ext
modifyPom(closureOf<MavenPom> {
// pom code in here
})
无论pom数据中有什么内容,我都会得到相同的结果,这是对ModifyPom groovy闭包的调用破坏了构建,并产生了非常模糊的错误:
Build file '<path>\build.gradle.kts' line: 47
Open File
换句话说,modifyPom groovy Closure调用的行号,但与实际错误无关。
我正在使用Gradle 5.0。任何帮助表示赞赏。
答案 0 :(得分:0)
此问题已通过将modifyPom的定义更改为
得以解决。val modifyPom : Closure<MavenPom> by ext
这已解决了最初发布的问题,现在正在修改pom。如果有人需要帮助,请添加评论,希望我会注意到
答案 1 :(得分:0)
所以-在Groovy中,我有这个块来配置POM,它工作得很好:
var tsneOpt = tsne.tsne( tensorData, { perplexity : PERPLEXITY } );
// This is the 'compute' version
tsneOpt.compute( ITERATIONS ).then( () => {
tsneOpt.coordsArray().then( coords => {
console.log( 'Projection finished!' );
coords.forEach( ( d, i ) => {
data[ i ].x = d[ 0 ];
data[ i ].y = d[ 1 ];
} );
drawProjection();
} );
} );
// This is the iterable version
async function iterateProjection() {
await tsneOpt.iterateKnn();
const step = 20;
for( let i = 0; i < ITERATIONS; i += step ) {
await tsneOpt.iterate( step );
tsneOpt.coordsArray().then( coords => {
console.log( 'Projection stepped!' );
coords.forEach( ( d, i ) => {
data[ i ].x = d[ 0 ];
data[ i ].y = d[ 1 ];
} );
drawProjection();
} );
}
}
以及如何将其转换为Kotlin DSL?
编辑: 好吧,在https://github.com/JetBrains/kotlin-native/issues/2372中得到了回答 在Gradle Kotlin DSL中,它变为:
project.publishing.publications.forEach { publication ->
publication.pom.withXml {
def root = asNode()
root.appendNode("name", "libui")
root.appendNode("description", "Kotlin/Native interop to libui: a portable GUI library")
root.appendNode("url", POM_SCM_URL)
root.children().last() + {
licenses {
license {
name "MIT License"
url POM_SCM_URL
distribution "repo"
}
}
developers {
developer {
id "msink"
name "Mike Sinkovsky"
email "msink@permonline.ru"
}
}
scm {
url POM_SCM_URL
connection POM_SCM_CONNECTION
developerConnection POM_SCM_DEV_CONNECTION
}
}
}
}