2011-01-11 9 views
12

Ich habe ein gemeinsames Problem und es gibt wahrscheinlich unzählige Möglichkeiten, es zu lösen. Ich suche eine elegante, einfache Lösung für dieses typische Szenario:Wie Ant-Eigenschaften basierend auf Variablen in Eclipse festlegen?

Ich habe ein Projekt in Eclipse mit einer Ant-Build-Datei (build.xml) die Build-Datei verwendet eine Eigenschaftendatei (build.properties). In dieser Eigenschaft Datei möchte ich eine Eigenschaft festlegen, die in das Stammverzeichnis des Eclipse-Projekts zeigt, wie:

project.root = /path/to/eclipse/workspace/projectName 

oder vorzugsweise:

project.root = ${path.to.eclipse.workspace}/projectName 

Wie kann ich tun dies in einer solchen Art und Weise dass:

  1. Arbeiten auf verschiedenen Rechnern mit unterschiedlichen Pfaden zum Projekt Wurzel (dh in einer Teamumgebung)
  2. Ermöglicht die Ameise build.xml Datei exe zu sein cuted in eclipse
  3. Ermöglicht die Ausführung der Datei ant build.xml außerhalb der Eclipse (d. h. von der Kommandozeile)
  4. Ermöglicht die build.properties-Datei in einem anderen Verzeichnis als der Projektstamm
+0

Ich würde sogar für eine Teillösung begleichen, die elegant-Adressen betrifft # 1 und # 2. Nummer 3 und 4 sind viel härter. – gMale

Antwort

7

Ich denke, was ich suche ist die folgende auf die build.properties Datei hinzuzufügen:

project.root = ${basedir} 

alternativ kann ich die basedir Eigenschaft nur, wenn project.root benötigt wird .

Ich sah zufällig auf die source code for ivy.properties und sah die basedir Eigenschaft verwendet wird. Ich habe gerade getestet und überprüft, dass diese Eigenschaft auf verschiedene Maschinen funktioniert sowohl von innen Eclipse und von der Kommandozeile sowie, wenn ein Anruf zu Ameise aus einem anderen Verzeichnis zu machen, wie:

ant -f /path/to/eclipse/workspace/projectName/build.xml 

Wenn ich eine Minute zu bekommen, Ich werde überprüfen, dass dies auch funktioniert, wenn Sie die Eigenschaftendatei an verschiedenen Stellen importieren (z. B. in src/main/resources/config/ivy/ivysettings.xml).

+0

Danke, hat mir auch geholfen. –

8

Sehen Fenster zu existieren -> Einstellungen -> Ant -> Runtime -> Eigenschaften benutzerdefinierten ant Eigenschaften zu definieren, sollte für jedes von Eclipse aufgerufene Ant-Skript verfügbar sein. Sie legen die gleiche Eigenschaft manuell fest, wenn Sie das Skript über die Befehlszeile aufrufen.

Ihre build.properties Datei existieren kann, wo immer Sie möchten. Verwenden Sie normale Ant-Funktionen, um sie in Ihr Skript zu importieren.

+0

Vielen Dank, dass Sie sich Zeit genommen haben, um zu antworten. Leider reagiert Ihre Antwort nicht direkt auf eines der oben genannten Probleme, da 1) die Ant-Laufzeiteigenschaften keinen Eintrag für den Projektstammpfad enthalten. Ich schätze, ich kann $ {workspace_loc} oder etwas Ähnliches zur Liste der Eigenschaften hinzufügen, aber das würde außerhalb von Eclipse nicht funktionieren. 2) Das manuelle Festlegen einer Eigenschaft beim Aufrufen des Skripts über die Befehlszeile kann nicht gut in eine Teamumgebung skaliert werden. 3) Schließlich, wenn die Eigenschaftendatei importiert wird, können sich die relativen Pfade ändern, so dass absolute Pfade erforderlich sind, was ein Problem darstellt. – gMale

3

Für mein Projekt archieve. Verwendung variabler von

zum Beispiel

ProjectName <dir> 
|_ ant <dir> 
    |_ ant.xml 

Ihr Fall kann die <project default="main" basedir="../"/>

Dann kann ich das Projekt root bekommen einfach nur die Ameise XML-Datei ändern<echo message= "Project Root: ${basedir}" />

3

wenn Sie brauchen mehr als die triviale basedir Sachen =
Ant4Eclipse - ein Bündel von ant Aufgaben für Zugangskonfigurationen zu verdunkeln aus ant -
Sie helfen können. Verwenden Sie sie einfach, wie, oder den Code grep und die relevanten Teile holen ..

+0

Danke, ich werde das untersuchen. Es klingt nützlich. – gMale

1

Sie legen relativen Eigenschaften für Ihre Ant-Build von Eclipse

Gehen Sie zu Ihrem ANT Builder Eigenschaften und in Argumente Abschnitt Eclipse können Sie Eigenschaften festlegen mit -D wie folgt

-Dworkspace="${workspace_loc}" -Dproject_dir="${project_loc}" 

(hier sind workspace_loc und project_loc Eclipse-Variablen). Diese Eigenschaften können in Ihrem ANT-Build-Skript wie normale Eigenschaften, beispielsweise zugegriffen werden:

<echo message="${workspace}" /> 
<echo message="${project_dir}" /> 

reference screenshot

Verwandte Themen