Index: test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-type.xml
===================================================================
--- test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-type.xml (revision 0)
+++ test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-type.xml (revision 0)
@@ -0,0 +1,38 @@
+
+
+
+
+ 4.0.0
+ org.apache
+ test
+ jar
+ 1.0
+ http://ant.apache.org/ivy
+
+
+ commons-logging
+ commons-logging
+ 1.0.4
+ dll
+ compile
+
+
+
Index: test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-type.pom
===================================================================
--- test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-type.pom (revision 1150222)
+++ test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-type.pom (working copy)
@@ -23,10 +23,10 @@
test
Test Module for Ivy M2 parsing
1.0
- http://ivy.jayasoft.org/
+ http://ant.apache.org/ivy
- Jayasoft
- http://www.jayasoft.org/
+ Apache
+ http://ant.apache.org/ivy
Index: test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriterTest.java
===================================================================
--- test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriterTest.java (revision 1150222)
+++ test/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriterTest.java (working copy)
@@ -80,6 +80,32 @@
assertEquals(expected, wrote);
}
+ public void testDependenciesWithType() throws Exception {
+ ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(
+ new IvySettings(), getClass().getResource("test-dependencies-with-type.pom"), false);
+ PomModuleDescriptorWriter.write(md, _dest, getWriterOptions());
+ assertTrue(_dest.exists());
+
+ String wrote = FileUtil.readEntirely(new BufferedReader(new FileReader(_dest))).replaceAll(
+ "\r\n", "\n").replace('\r', '\n');
+ String expected = readEntirely("test-write-dependencies-with-type.xml")
+ .replaceAll("\r\n", "\n").replace('\r', '\n');
+ assertEquals(expected, wrote);
+ }
+
+ public void testDependenciesWithClassifier() throws Exception {
+ ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(
+ new IvySettings(), getClass().getResource("test-dependencies-with-classifier.pom"), false);
+ PomModuleDescriptorWriter.write(md, _dest, getWriterOptions());
+ assertTrue(_dest.exists());
+
+ String wrote = FileUtil.readEntirely(new BufferedReader(new FileReader(_dest))).replaceAll(
+ "\r\n", "\n").replace('\r', '\n');
+ String expected = readEntirely("test-write-dependencies-with-classifier.xml")
+ .replaceAll("\r\n", "\n").replace('\r', '\n');
+ assertEquals(expected, wrote);
+ }
+
public void testOptional() throws Exception {
ModuleDescriptor md = PomModuleDescriptorParser.getInstance().parseDescriptor(
new IvySettings(), getClass().getResource("test-optional.pom"), false);
Index: test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-classifier.xml
===================================================================
--- test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-classifier.xml (revision 0)
+++ test/java/org/apache/ivy/plugins/parser/m2/test-write-dependencies-with-classifier.xml (revision 0)
@@ -0,0 +1,38 @@
+
+
+
+
+ 4.0.0
+ org.apache
+ test
+ jar
+ 1.0
+ http://ant.apache.org/ivy
+
+
+ commons-logging
+ commons-logging
+ 1.0.4
+ asl
+ compile
+
+
+
Index: test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-classifier.pom
===================================================================
--- test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-classifier.pom (revision 1150222)
+++ test/java/org/apache/ivy/plugins/parser/m2/test-dependencies-with-classifier.pom (working copy)
@@ -23,10 +23,10 @@
test
Test Module for Ivy M2 parsing
1.0
- http://ivy.jayasoft.org/
+ http://ant.apache.org/ivy
- Jayasoft
- http://www.jayasoft.org/
+ Apache
+ http://ant.apache.org/ivy
Index: src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriter.java
===================================================================
--- src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriter.java (revision 1150222)
+++ src/java/org/apache/ivy/plugins/parser/m2/PomModuleDescriptorWriter.java (working copy)
@@ -35,6 +35,7 @@
import org.apache.ivy.core.IvyContext;
import org.apache.ivy.core.IvyPatternHelper;
import org.apache.ivy.core.module.descriptor.Artifact;
+import org.apache.ivy.core.module.descriptor.DependencyArtifactDescriptor;
import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
import org.apache.ivy.core.module.descriptor.ExcludeRule;
import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
@@ -217,41 +218,15 @@
// print the extra dependencies first
for (Iterator it = extraDeps.iterator(); it.hasNext(); ) {
PomWriterOptions.ExtraDependency dep = (ExtraDependency) it.next();
-
- indent(out, indent * 2);
- out.println("");
String groupId = dep.getGroup();
if (groupId == null) {
groupId = md.getModuleRevisionId().getOrganisation();
}
- indent(out, indent * 3);
- out.println("" + groupId + "");
- indent(out, indent * 3);
- out.println("" + dep.getArtifact() + "");
String version = dep.getVersion();
if (version == null) {
version = md.getModuleRevisionId().getRevision();
}
- indent(out, indent * 3);
- out.println("" + version + "");
- if (dep.getType() != null) {
- indent(out, indent * 3);
- out.println("" + dep.getType() + "");
- }
- if (dep.getClassifier() != null) {
- indent(out, indent * 3);
- out.println("" + dep.getClassifier() + "");
- }
- if (dep.getScope() != null) {
- indent(out, indent * 3);
- out.println("" + dep.getScope() + "");
- }
- if (dep.isOptional()) {
- indent(out, indent * 3);
- out.println("true");
- }
- indent(out, indent * 2);
- out.println("");
+ printDependency(out, indent, groupId, dep.getArtifact(), version, dep.getType(), dep.getClassifier(), dep.getScope(), dep.isOptional(), null);
}
// now print the dependencies listed in the ModuleDescriptor
@@ -262,29 +237,21 @@
for (int i = 0; i < dds.length; i++) {
ModuleRevisionId mrid = dds[i].getDependencyRevisionId();
- indent(out, indent * 2);
- out.println("");
- indent(out, indent * 3);
- out.println("" + mrid.getOrganisation() + "");
- indent(out, indent * 3);
- out.println("" + mrid.getName() + "");
- indent(out, indent * 3);
- out.println("" + mrid.getRevision() + "");
- String scope = mapping.getScope(dds[i].getModuleConfigurations());
- if (scope != null) {
- indent(out, indent * 3);
- out.println("" + scope + "");
+ ExcludeRule[] excludes = null;
+ if(dds[i].canExclude()){
+ excludes = dds[i].getAllExcludeRules();
}
- if (mapping.isOptional(dds[i].getModuleConfigurations())) {
- indent(out, indent * 3);
- out.println("true");
+ DependencyArtifactDescriptor[] dads = dds[i].getAllDependencyArtifacts();
+ if(dads.length > 0) {
+ for (int j = 0; j < dads.length; j++) {
+ String type = dads[j].getType();
+ String classifier = dads[j].getExtraAttribute("classifier");
+ printDependency(out, indent, mrid.getOrganisation(), mrid.getName(), mrid.getRevision(), type, classifier, mapping.getScope(dds[i].getModuleConfigurations()), mapping.isOptional(dds[i].getModuleConfigurations()), excludes);
+ }
}
-
- if(dds[i].canExclude()){
- printExclusions(dds[i].getAllExcludeRules(), out, indent);
+ else {
+ printDependency(out, indent, mrid.getOrganisation(), mrid.getName(), mrid.getRevision(), null, null, mapping.getScope(dds[i].getModuleConfigurations()), mapping.isOptional(dds[i].getModuleConfigurations()), excludes);
}
- indent(out, indent * 2);
- out.println("");
}
if (printDependencies) {
@@ -294,6 +261,40 @@
}
}
+ private static void printDependency(PrintWriter out, int indent, String groupId, String artifactId, String version, String type, String classifier, String scope, boolean isOptional, ExcludeRule[] excludes) {
+ indent(out, indent * 2);
+ out.println("");
+ indent(out, indent * 3);
+ out.println("" + groupId + "");
+ indent(out, indent * 3);
+ out.println("" + artifactId + "");
+ indent(out, indent * 3);
+ out.println("" + version + "");
+ if(type != null && !type.equals("jar")) {
+ indent(out, indent * 3);
+ out.println("" + type + "");
+ }
+ if(classifier != null) {
+ indent(out, indent * 3);
+ out.println("" + classifier + "");
+ }
+ if (scope != null) {
+ indent(out, indent * 3);
+ out.println("" + scope + "");
+ }
+ if (isOptional) {
+ indent(out, indent * 3);
+ out.println("true");
+ }
+
+ if(excludes != null){
+ printExclusions(excludes, out, indent);
+ }
+ indent(out, indent * 2);
+ out.println("");
+
+ }
+
private static void printExclusions(ExcludeRule[] exclusions, PrintWriter out, int indent ){
indent(out, indent * 3);
out.println("");