如何在我使用gradle maven-plugin的sourceDirectory
DSL创建的pom.xml中设置testSourceDirectory
,plugins
和构建pom
?< / p>
如果我在我的DSL部分添加build
而没有Closure
,那就没关系..但是当我添加build { /* anything else, like actual compile plugins */}
时,它会给我这个错误:
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动词。
有没有办法强制build
被视为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'
}
}
}