/**
   * 解析项目规范
   *
   * @param groupConventionAnnotation 组织级注解
   * @return 项目规范信息
   */
  ProjectConvention parseProjectConvention(GroupConventionAnnotation groupConventionAnnotation) {

    String className = groupConventionAnnotation.projectConventionClass();

    Class<?> clazz;
    try {
      clazz = Thread.currentThread().getContextClassLoader().loadClass(className);
    } catch (ClassNotFoundException e) {
      return new ProjectConvention() {
        @Override
        public String id() {
          return "";
        }

        @Override
        public void configure(Binder binder) {}
      };
    }

    ProjectConvention projectConvention = null;
    if (ProjectConvention.class.isAssignableFrom(clazz)) {
      // TODO:需要描述,为何抛错,这个类必须继承ProjectConvention并实现,并且构造函数必须无参。
      projectConvention = ProjectConvention.class.cast(newInstanceByClass(clazz, ""));
    }

    if (projectConvention != null) return projectConvention;

    throw ArgoException.raise(
        String.format("Class %s not implement ProjectConvention!", className));
  }