Das Ivy-Plugin benötigt als Eingabedatei eine Datei mit dem Namen ivy.xml und enthält im Wesentlichen alle Daten, die Ihr in der pom.xml-Datei findet. In den beiden Listings habe ich die entsprechenden Zeilen markiert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.mkyong.hashing</groupId> <artifactId>java-project</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>java-project</name> <url>http://maven.apache.org</url> <properties> <!-- https://maven.apache.org/general.html#encoding-warning --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.11</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.0</version> <executions> <!-- Attach the shade into the package phase --> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.mkyong.hashing.App</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <!-- fat-jar --> <!-- https://books.sonatype.com/mvnex-book/reference/customizing-sect-custom-packaged.html --> <!-- <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.mkyong.hashing.App</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>simple-command</id> <phase>package</phase> <goals> <goal>attached</goal> </goals> </execution> </executions> </plugin> --> </plugins> </build> </project> |
1 2 3 4 5 6 7 |
<ivy-module version="2.0"> <info organisation="Demo Application" module="App"/> <dependencies> <dependency org="junit" name="junit" rev="4.12"/> <dependency org="commons-codec" name="commons-codec" rev="1.11"/> </dependencies> </ivy-module> |
Der Konverter kopiert alle Inhalte zwischen „<dependencies>“ und „</dependencies>“ in die ivy.xml, wobei der Inhalt des Feldes „groupId in das Feld „org“ übernommen wird, das „artifactId“ wird in „name“ übersetzt und aus der „version“ wird „rev“.
Wir nutzen für einen Test die pom.xml-Datei unseres Beispieles intelliJ IDEA Ivy-Nutzung und lassen Sie vom Konverter umwandeln, das Ergebnis findet Ihr oben als ivy.xml.
Diese ivy.xml-Datei kopieren wir in das Projektverzeichnis des Beispieles und arbeiten damit weiter.
Hier noch der Sourcecode, der sicherlich schöner programmiert werden kann:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
/* * Herkunft/Origin: http://javacrypto.bplaced.net/ * Programmierer/Programmer: Michael Fehr * Copyright/Copyright: frei verwendbares Programm (Public Domain) * Copyright: This is free and unencumbered software released into the public domain. * Lizenttext/Licence: <http://unlicense.org> * getestet mit/tested with: Java Runtime Environment 11.0.5 x64 * verwendete IDE/used IDE: intelliJ IDEA 2019.3.4 * Datum/Date (dd.mm.jjjj): 31.03.2020 * Funktion: Konvertiert eine Maven pom.xml-Datei in eine Ivy ivy.xml-Datei * Function: converts a Maven pom.xml file to a Ivy ivy.xml file * * Sicherheitshinweis/Security notice * Die Programmroutinen dienen nur der Darstellung und haben keinen Anspruch auf eine korrekte Funktion, * insbesondere mit Blick auf die Sicherheit ! * Prüfen Sie die Sicherheit bevor das Programm in der echten Welt eingesetzt wird. * The program routines just show the function but please be aware of the security part - * check yourself before using in the real world ! * */ import java.io.*; public class PomToIvyConverter { public static void main(String[] args) throws IOException { System.out.println("POM.xml to IVY.xml converter"); String pomFilename = "pom.xml"; String ivyFilename = "ivy.xml"; File pomFile = new File(pomFilename); File ivyFile = new File(ivyFilename); boolean verbose = false; // true = ausgabe auf dem bildschirm System.out.println("Die Datei " + pomFilename + " ist vorhanden: " + pomFile.exists()); if (!pomFile.exists()) { System.out.println("Die Datei " + pomFilename + " ist nicht vorhanden. Das Programm wird beendet"); System.exit(0); } System.out.println("Die Datei " + ivyFilename + " ist vorhanden: " + ivyFile.exists()); if (ivyFile.exists()) { System.out.println("Die Datei " + ivyFilename + " wird geloescht"); ivyFile.delete(); System.out.println("Die Datei " + ivyFilename + " ist vorhanden: " + ivyFile.exists()); } // pom-file is existing and ivy-file is not existing boolean startDependency = false; boolean startGroupId = false; String valueGroupId = ""; boolean startArtifactId = false; String valueArtifactId = ""; boolean startVersion = false; String valueVersion = ""; boolean startComment = false; boolean writeDependency = false; BufferedReader in = null; BufferedWriter writer = null; try { writer = new BufferedWriter(new FileWriter(ivyFile)); } catch (IOException e) { e.printStackTrace(); } // write header writer.write("<ivy-module version=\"2.0\">" + "\n"); writer.write(" <info organisation=\"Demo Application\" module=\"App\"/>" + "\n"); writer.write(" <dependencies>" + "\n"); int lineRead = 0; // in = null; String readZeile = ""; try { in = new BufferedReader(new FileReader(pomFile)); while ((readZeile = in.readLine()) != null) { lineRead++; readZeile = readZeile.trim(); if (verbose) {System.out.println("Zeile " + lineRead + ":" + readZeile);} if (readZeile.contains("<dependency>")) { startDependency = true; startGroupId = false; startArtifactId = false; startVersion = false; } if (readZeile.contains("</dependency>")) { startDependency = false; } if (readZeile.contains("<groupId>")) { startGroupId = true; } if (readZeile.contains("<artifactId>")) { startArtifactId = true; } if (readZeile.contains("<version>")) { startVersion = true; } if (readZeile.contains("<!--")) { startComment = true; } if (readZeile.contains("-->")) { startComment = false; } // start the conversion // get the groupId if (startComment == false & startDependency == true & startGroupId == true) { valueGroupId = getStringBeetween(readZeile, "<groupId>", "</groupId>"); if (verbose) {System.out.println("groupId: " + valueGroupId);} startGroupId = false; } if (startComment == false & startDependency == true & startArtifactId == true) { valueArtifactId = getStringBeetween(readZeile, "<artifactId>", "</artifactId>"); if (verbose) { System.out.println("artifactId: " + valueArtifactId);} startArtifactId = false; } if (startComment == false & startDependency == true & startVersion == true) { valueVersion = getStringBeetween(readZeile, "<version>", "</version>"); if (verbose) { System.out.println("version: " + valueVersion);} startVersion = false; writeDependency = true; } if (writeDependency == true) { writer.write(" <dependency org=\"" + valueGroupId + "\" name=\"" + valueArtifactId + "\" rev=\"" + valueVersion + "\"/>" + "\n"); valueGroupId = ""; valueArtifactId = ""; valueVersion = ""; writeDependency = false; } } } catch (IOException e) { System.out.println("Fehler beim Lesen: " + e); } in.close(); // write footer writer.write(" </dependencies>" + "\n"); writer.write("</ivy-module>" + "\n"); writer.flush(); writer.close(); System.out.println("Die Datei " + ivyFilename + " wurde erfolgreich erstellt"); } private static String getStringBeetween(String line, String startLine, String endLine) { String lineBetween = ""; lineBetween = line.replace(startLine, ""); lineBetween = lineBetween.replace(endLine, ""); return lineBetween; } } |
Alle Quellcodes zu intelliJ IDEA findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/intelliJ-IDEA. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für das eigene „Spielen“ notwendig ist.
Die Lizenz zum obigen Beispiel findet Ihr auf der eigenen Lizenz-Seite.
Letzte Bearbeitung: 31.03.2020