从gradle:can';t创建<;构建>;要素
如何设置从gradle:can';t创建<;构建>;要素,gradle,pom.xml,Gradle,Pom.xml,如何设置sourceDirectory,testSourceDirectory并在使用gradle maven插件的pomDSL创建的pom.xml中构建plugins 当我将build添加到我的DSL部分时,没有Closure,就可以了。。但是当我添加build{/*任何其他东西,比如实际的编译插件*/}时,它会给我以下错误: Execution failed for task ':mavenWrapper'. > No such property: _SCRIPT_CLASS_NAME
sourceDirectory
,testSourceDirectory
并在使用gradle maven插件的pom
DSL创建的pom.xml中构建plugins
当我将build
添加到我的DSL部分时,没有Closure
,就可以了。。但是当我添加build{/*任何其他东西,比如实际的编译插件*/}
时,它会给我以下错误:
Execution failed for task ':mavenWrapper'.
> No such property: _SCRIPT_CLASS_NAME_ for class: org.apache.maven.model.Model
我猜gradle将build
视为任务,而不是org.sonatype.maven.polyglot.groovy.builder.ModelBuilder
生成的DSL动词
有没有办法强制将构建
视为DSL的一部分?它可以是演员还是什么的
现在我正在通过使用.withXml
解决这个问题,但是它非常冗长,而且不易维护
以下是我所做工作的简略版本:
task mavenWrapper {
doLast {
delete 'pom.xml', 'mvnw', 'mvnw.cmd'
pom {
project {
packaging 'pom'
repositories {
repository {
id 'spring-milestones'
name 'Spring Milestones'
url 'https://repo.spring.io/libs-milestone'
snapshots {
enabled 'false'
}
}
}
properties {
'kotlin.compiler.incremental' 'true'
}
/* ******** Problem is here
build {
plugins {
plugin {
// ... etc. etc.
}
}
}
******* */
dependencyManagement {
dependencies {
dependency {
groupId 'org.jetbrains.kotlin'
artifactId 'kotlin-stdlib-jre8'
version "${kotlin_version}"
scope 'compile'
}
}
}
}
}.withXml {
// Workaround for the missing build { ... } section above.
asNode().appendNode('build').appendNode('plugins')
// etc. etc.
}.writeTo("${projectDir}/pom.xml")
exec {
commandLine 'mvn', '-N', 'io.takari:maven:wrapper', '-Dmaven=3.5.0'
}
}
}
我还尝试了
委托.build
。没有变化。