5 Stimmen

Kann ant Text in Dateien innerhalb eines jar/ear/war ersetzen?

Ich möchte meine ear-Datei einmal erstellen und dann ant verwenden, um einige Einstellungen in application.xml, Property-Dateien usw. zu ändern.

Gibt es eine Möglichkeit, dies mit Ameisen zu tun?

[edit] Gerade dies gefunden

Wie ändere ich eine Datei in einer jar-Datei mit ANT?

4voto

David W. Punkte 101611

Die einzige Möglichkeit, eine Datei in Ihrem jar oder ear zu ändern, ist die Verwendung der <unzip> Aufgabe, verwenden Sie die <replace> um die Felder in der Datei zu ändern, und packen Sie die Datei dann entweder mit dem <zip> o <jar>/<ear> Aufgabe.

Es gibt mehrere Möglichkeiten, wie Sie dies bewerkstelligen können, ohne Ihre ear/jar/war-Dateien zu entpacken und neu zu entpacken:

  • Die bevorzugte Methode ist, den Anwendungsserver so einzurichten, dass er die Eigenschaften außerhalb des Ohrs selbst finden kann. Es ist auch möglich, die application.xml Datei, um bei der Angabe von Speicherorten keine relativen Verzeichnisse zu verwenden, sondern die Speicherorte vom Stamm des Rechners aus anzugeben. Wenn Sie die eingebetteten Umgebungsinformationen aus Ihrem Ohr entfernen, können Sie dieselbe Ohrdatei in allen Ihren Umgebungen verwenden.

  • Wir sind leider nicht in der Lage, dies zu tun und müssen für jede Umgebung separate Ohrdateien bereitstellen. Wir verwenden Jenkins als unseren kontinuierlichen Build-Server. Wenn Jenkins unsere Builds durchführt, erstellen wir mehrere Ohren, eine für jede Umgebung, zur gleichen Zeit. Auf diese Weise können wir beim Wechsel von Dev zu QA zu STAGE zu Production zumindest auf die gleiche Build-Nummer verweisen. Wir kompilieren einmal und verwenden dann die AntContrib <foreach> Aufgabe um die Ohrdatei mit den korrekten Einstellungen der Eigenschaftsdatei und den richtigen application.xml Datei. Wir verwenden <filterset> in unserem <copy> Aufgabe, die Eigenschaften zu ändern und application.xml während wir das Ohr bauen.

1voto

David George Punkte 3564

Sie können etwa so vorgehen

<zip destfile="tmp.jar" >
  <zipfileset src="lib/myjar.jar" excludes="org/example/My*.class" />
  <zipfileset dir="bin" includes="org/example/My*.class"  />
</zip>
<move file="tmp.jar" tofile="lib/myjar.jar"/>

In diesem Beispiel erstellen wir ein tmp.jar unter Verwendung von myjar.jar als Quelle, schließen aber alle Klassen, die mit My beginnen, im Verzeichnis org/example aus. Anschließend fügen wir unsere neue Version aus dem bin-Verzeichnis hinzu. Anschließend ersetzen wir die jar-Datei durch unsere neue Version.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X