package restx.build; import java.io.IOException; import java.io.Writer; import java.util.Map; /** * User: xavierhanin * Date: 4/14/13 * Time: 2:08 PM */ public class IvySupport implements RestxBuild.Generator { private String eaVersion = "0.9"; public void generate(ModuleDescriptor md, Writer w) throws IOException { if (md.hasClassifier()) { w.write("<ivy-module version=\"2.0\" xmlns:ea=\"http://www.easyant.org\" xmlns:e=\"http://ant.apache.org/ivy/extra\">\n"); } else { w.write("<ivy-module version=\"2.0\" xmlns:ea=\"http://www.easyant.org\">\n"); } w.write(" <info organisation=\"" + md.getGav().getGroupId() + "\" module=\"" + md.getGav().getArtifactId() + "\" revision=\"" + md.getGav().getVersion().replaceAll("\\-SNAPSHOT$", "") + "\" status=\"integration\">\n"); String buildType = md.getPackaging().equals("war") ? "build-webapp-java" : "build-std-java"; w.write(" <ea:build organisation=\"org.apache.easyant.buildtypes\"" + " module=\""+buildType+"\" revision=\"" + eaVersion + "\"\n"); for (Map.Entry<String, String> entry : md.getProperties().entrySet()) { if (entry.getKey().equals("java.version")) { w.write(" compile.java.source.version=\"" + entry.getValue() + "\"\n"); w.write(" compile.java.target.version=\"" + entry.getValue() + "\"\n"); } else if (entry.getKey().endsWith(".version")) { // versions are inlined, no need to put them here } else { w.write(" " + entry.getKey() + "=\"" + entry.getValue() + "\"\n"); } } w.write(" />\n" + " </info>\n" + " <configurations>\n" + " <conf name=\"default\"/>\n" + " <conf name=\"runtime\"/>\n" + " <conf name=\"test\"/>\n" + " </configurations>\n" + " <publications>\n" + " <artifact type=\"" + md.getPackaging() + "\"/>\n" + " </publications>\n"); w.write(" <dependencies>\n"); for (String scope : md.getDependencyScopes()) { for (ModuleDependency dependency : md.getDependencies(scope)) { String groupId = dependency.getGav().getGroupId(); String version = RestxBuildHelper.expandProperty(dependency.getGav().getVersion(), "module.version", md.getGav().getVersion()); String expandedVersion = RestxBuildHelper.expandProperties(md.getProperties(), version); if (expandedVersion.endsWith("-SNAPSHOT")) { expandedVersion = "latest.integration"; } if (dependency.getGav().getClassifier() == null) { w.write(String.format(" <dependency org=\"%s\" name=\"%s\" rev=\"%s\" conf=\"%s\" />\n", groupId, dependency.getGav().getArtifactId(), expandedVersion, "compile".equals(scope) ? "default" : scope +"->default")); } else { w.write(String.format(" <dependency org=\"%s\" name=\"%s\" rev=\"%s\" conf=\"%s\">\n <artifact name=\"%s\" e:classifier=\"%s\" />\n </dependency>\n", groupId, dependency.getGav().getArtifactId(), expandedVersion, "compile".equals(scope) ? "default" : scope +"->default", dependency.getGav().getArtifactId(), dependency.getGav().getClassifier())); } } } w.write(" </dependencies>\n"); w.write("</ivy-module>\n"); } @Override public String getDefaultFileName() { return "module.ivy"; } }