如何获得母公司的Maven的属性摇篮(How to get properties of parent

2019-11-04 14:54发布

我们有使用Maven作为构建自动化工具,这些项目的开发,并在我们公司的多个团队使用的多个项目。 我们在其中,我们有通用插件相关的代码父应用程序,我们使用如下

<parent>
    <groupId>some.project.config</groupId>
    <artifactId>project-config</artifactId>
    <version>x.x.xx</version>
    <relativePath />
  </parent>

我需要的gradle使用一个应用程序如何使用父的属性。 是否需要有家长也转换为摇篮使用的属性?

Answer 1:

你可以使用Maven的模型构建器API来获取有效模式

见MavenTransform.java和ModelResolverImpl.java

例如:

buildscript {
    dependencies {
        classpath 'org.apache.maven:maven-model:3.5.2'
        classpath 'org.apache.maven:maven-model-builder:3.5.2'  
    }
}
configurations {
    pom 
}
dependencies {
    pom 'some.project.config:project-config:x.x.xx@pom'
}
task copyPom(type: Copy) {
    from configurations.pom.singleFile
    into "$buildDir/pom"
    rename '.*', 'pom.xml'
}
task parsePom(dependsOn: copyPom) {
    inputs.file "$buildDir/pom/pom.xml"
    doLast {
        DefaultModelBuilderFactory factory = new DefaultModelBuilderFactory();
        DefaultModelBuilder builder = factory.newInstance()
        ModelResolver modelResolver = new ModelResolverImpl(project)
        ModelBuildingRequest req = new DefaultModelBuildingRequest()
        req.pomFile = file("$buildDir/pom/pom.xml")
        req.modelResolver = modelResolver
        req.xxx = ...
        req.yyy = ...
        Model effectivePom = builder.build(req).getEffectiveModel()
        doStuff(effectivePom)
    }
}


文章来源: How to get properties of parent Maven to Gradle
标签: gradle