blob: 2359c164201be32c90426cf7af722f0e4869a4a4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.ivy.ant;
import java.util.ArrayList;
import java.util.List;
import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
import org.apache.ivy.core.module.descriptor.DefaultExcludeRule;
import org.apache.ivy.core.module.descriptor.DefaultIncludeRule;
import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
import org.apache.ivy.core.module.id.ModuleRevisionId;
import org.apache.ivy.core.settings.IvySettings;
import org.apache.tools.ant.BuildException;
public class IvyDependency {
private List<IvyDependencyConf> confs = new ArrayList<>();
private List<IvyDependencyArtifact> artifacts = new ArrayList<>();
private List<IvyDependencyExclude> excludes = new ArrayList<>();
private List<IvyDependencyInclude> includes = new ArrayList<>();
private String org;
private String name;
private String rev;
private String branch;
private String conf;
private boolean changing;
private boolean force;
private boolean transitive = true;
public IvyDependencyConf createConf() {
IvyDependencyConf c = new IvyDependencyConf();
confs.add(c);
return c;
}
public IvyDependencyArtifact createArtifact() {
IvyDependencyArtifact artifact = new IvyDependencyArtifact();
artifacts.add(artifact);
return artifact;
}
public IvyDependencyExclude createExclude() {
IvyDependencyExclude exclude = new IvyDependencyExclude();
excludes.add(exclude);
return exclude;
}
public IvyDependencyInclude createInclude() {
IvyDependencyInclude include = new IvyDependencyInclude();
includes.add(include);
return include;
}
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRev() {
return rev;
}
public void setRev(String rev) {
this.rev = rev;
}
public String getBranch() {
return branch;
}
public void setBranch(String branch) {
this.branch = branch;
}
public String getConf() {
return conf;
}
public void setConf(String conf) {
this.conf = conf;
}
public boolean isChanging() {
return changing;
}
public void setChanging(boolean changing) {
this.changing = changing;
}
public boolean isForce() {
return force;
}
public void setForce(boolean force) {
this.force = force;
}
public boolean isTransitive() {
return transitive;
}
public void setTransitive(boolean transitive) {
this.transitive = transitive;
}
DependencyDescriptor asDependencyDescriptor(ModuleDescriptor md, String masterConf,
IvySettings settings) {
if (org == null) {
throw new BuildException("'org' is required on ");
}
if (name == null) {
throw new BuildException("'name' is required when using inline mode");
}
ModuleRevisionId mrid = ModuleRevisionId.newInstance(org, name, branch, rev);
DefaultDependencyDescriptor dd = new DefaultDependencyDescriptor(md, mrid, force, changing,
transitive);
if (conf != null) {
dd.addDependencyConfiguration(masterConf, conf);
} else {
dd.addDependencyConfiguration(masterConf, "*");
}
for (IvyDependencyConf c : confs) {
c.addConf(dd, masterConf);
}
for (IvyDependencyArtifact artifact : artifacts) {
artifact.addArtifact(dd, masterConf);
}
for (IvyDependencyExclude exclude : excludes) {
DefaultExcludeRule rule = exclude.asRule(settings);
dd.addExcludeRule(masterConf, rule);
}
for (IvyDependencyInclude include : includes) {
DefaultIncludeRule rule = include.asRule(settings);
dd.addIncludeRule(masterConf, rule);
}
return dd;
}
}