6 Stimmen

Ändern von Paketnamen vor der Erstellung in Bamboo

Ich habe kürzlich entdeckt, dass BlackBerry behandelt alle Klassen mit demselben vollqualifizierten Namen als identisch --Dies führt dazu, dass Anwendungen, die unterschiedliche Versionen unserer gemeinsam genutzten Bibliotheken verwenden, nicht mehr funktionieren, wenn sie auf demselben Telefon installiert sind.

Um dieses Problem zu lösen, planen wir, die Paketnamen so zu ändern, dass sie eine Versionsnummer enthalten, und dann zu bauen. Kann mir jemand erklären, wie ich mit Bamboo einen Schritt in unseren Build-Prozess einfügen kann, der:

  • ändert bestimmte Paketnamen
  • alle Codereferenzen auf den alten Paketnamen durch Referenzen auf den neuen Paketnamen ersetzt?

2voto

Chris Lercher Punkte 36644

Ein großartiges Tool, das speziell für die Aufgabe entwickelt wurde, die vollqualifizierten Namen von Java-Klassen in jar-Dateien zu ändern, ist jarjar . Es kann einfach von Ant aus verwendet werden, oder alternativ aus einem Shell-Skript .

Ich habe noch nie Bamboo benutzt - ich nehme an, dass es auch dort funktionieren sollte. Natürlich kann es einige spezielle Einschränkungen in dieser Umgebung (in Bezug auf Bytecode-Manipulation) geben, die ich nicht kenne (?)

2voto

Jörn Horstmann Punkte 32716

Ich bin mit Bamboo nicht vertraut und Sie haben nicht viele Informationen über Ihr Build-System angegeben. Wenn Sie Maven verwenden, könnten Sie die Shade-Plugin :

Dieses Plugin bietet die Möglichkeit, das Artefakt in einem Uber-Jar zu verpacken, einschließlich seiner Abhängigkeiten, und die Pakete einiger Abhängigkeiten zu schattieren - d.h. umzubenennen -.

En zweites Beispiel hier zeigt, wie man die Paketumbenennung konfiguriert. Die resultierende jar-Datei müsste dann von rapc verarbeitet werden wie in Chris Lerchers Kommentar zu seine Antwort . Es sollte möglich sein, dies auch in ein Maven-Build zu integrieren, indem man die exec-Plugin .

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