示例#1
0
  public void from(SoftwareComponent component) {
    if (this.component != null) {
      throw new InvalidUserDataException(
          String.format("Ivy publication '%s' cannot include multiple components", name));
    }
    this.component = (SoftwareComponentInternal) component;

    configurations.maybeCreate("default");

    for (Usage usage : this.component.getUsages()) {
      String conf = usage.getName();
      configurations.maybeCreate(conf);
      configurations.getByName("default").extend(conf);

      for (PublishArtifact publishArtifact : usage.getArtifacts()) {
        artifact(publishArtifact).setConf(conf);
      }

      for (ModuleDependency dependency : usage.getDependencies()) {
        // TODO: When we support multiple components or configurable dependencies, we'll need to
        // merge the confs of multiple dependencies with same id.
        String confMapping =
            String.format(
                "%s->%s",
                conf,
                dependency.getTargetConfiguration() == null
                    ? Dependency.DEFAULT_CONFIGURATION
                    : dependency.getTargetConfiguration());
        if (dependency instanceof ProjectDependency) {
          addProjectDependency((ProjectDependency) dependency, confMapping);
        } else {
          addModuleDependency(dependency, confMapping);
        }
      }
    }
  }