async visitPom()

in lib/generator.js [119:160]


  async visitPom() {
    var entities = new Entities();
    var targetFile = path.join(this.pomOutputDir, 'pom.xml');
    let pomName = 'pom.xml';
    if (this.exec) {
      pomName = 'pomWithMain.xml';
    }
    var pomFile = fs.readFileSync(path.join(__dirname, '../template', pomName));
    var dependenciesClass = [];
    Object.keys(this.imports).forEach((key) => {
      let dependency = this.imports[key].release.split(':');
      if (dependency[1].startsWith('aliyun-gateway-')) {
        if (!dependenciesClass.includes(`${dependency[0]}:${dependency[1]}:` + '${service.version}')) {
          dependenciesClass.push(`${dependency[0]}:${dependency[1]}:` + '${service.version}');
        }
      } else if (dependency[1] !== 'darabonba-java-core') {
        dependenciesClass.push(this.imports[key].release);
      }
    });
    const json = await parse(pomFile);
    if (!json.project.dependencies || !json.project.dependencies[0].dependency) {
      json.project.dependencies = [{ dependency: [] }];
    }
    dependenciesClass.forEach((value) => {
      if (value) {
        let dependency = value.split(':');
        var dependencyObject = {};
        dependencyObject.groupId = dependency[0];
        dependencyObject.artifactId = dependency[1];
        dependencyObject.version = dependency[2];
        json.project.dependencies[0].dependency.push(dependencyObject);
      }
    });
    const builder = new xml2js.Builder();
    let newPom = builder.buildObject(json);
    if (this.exec) {
      let mainClassPath = this.package + '.' + (this.className || 'DefaultAsyncClient');
      newPom = newPom.split('${mainClass}').join(mainClassPath);
    }
    newPom = render(newPom, this.packageInfo);
    save(targetFile, entities.decode(newPom));
  }