maven ruft externes Skript auf Linux- und Windows-Plattformen auf
Brauche ich, um ein externes Skript auf Linux und MS-Windows-Plattformen.
- Verwende ich das richtige plugin
exec-maven-plugin
? - Ist es, eine passende plugin?
-
Welchem Dateinamen soll ich in
<executable>....</executable>
?<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <id>compile-jni</id> <phase>compile</phase> <goals> <goal>exec</goal> </goals> <configuration> <executable>./compile-jni</executable> <workingDirectory>${basedir}/src/main/cpp</workingDirectory> </configuration> </execution> </executions> </plugin>
Ich benutze den gleichen Makefile
für beide Plattformen Linux/MS-Windows
Mein Skript compile-jni.bat
:
call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
bash -c "make"
Mein Skript compile-jni.sh
:
#!/bin/sh
make
UPDATE:
Beiden Kollegen haben vorgeschlagen, alternativen:
-
Verwenden Sie eine variable
script.extension
ändern<executable>./compile-jni${script.extension}</executable>
impom.xml
und fügen Sie die variable in der Befehlszeilemvn compile -Dscript.extention=.bat
-
oder legen Sie die Visual Studio-Umgebung Variablen werden vor dem Aufruf von maven:
call "C:\%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 mvn compile #(the same script 'bash -c "make"' works on both platforms)
Aber auf beiden Lösungen, Eclipse-Anwender können stucked... ich bin noch auf der Suche für eine automatische und elegante Lösung...
InformationsquelleAutor der Frage olibre | 2013-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich, ich mischte die Ideen => die
<profiles>
werden verwendet, um eine interne variablescript.extension
je nach Betriebssystem:Dann habe ich diese variable verwenden, um das Skript auszuführen mit dem Namen:
⚠ Wie bemerkt, durch Maksim für maven 3.5.4 verschieben Sie den Abschnitt
<configuration>
wie unten gezeigt:Habe ich verschoben in das Arbeitsverzeichnis aus der
pom.xml
um das shell-Skript. Um die Wartung zu vereinfachen, die gemeinsame Sachen verschoben wird, die innerhalb dieser shell-scrip. Also, die batch-Datei verwenden Sie dieses shell-Skript:compile-jni.bat
:compile-jni.sh
:InformationsquelleAutor der Antwort olibre
Beispiel laufen sh Skript.
Diese nicht einfach eine
chmod
für die sh-Skript. Halten Sie im Verstand, wenn Sie haben ein sh-Skript, sollte man auf jeden Fall tun, einechmod
vor der Durchführung anderer Operationen, wie läuft das eigentliche Skript, so dass dies als ein Beispiel, können Sie die ersten<execution>
als unten und fügen Sie weitere<execution>
zur Ausführung Ihres Skripts.Für die batch-Datei, können Sie nur eine
<execution>
zur Ausführung Ihres Skriptsund Sie würden wahrscheinlich hinzufügen möchten, ein Profil, abhängig davon, welche Maschine Sie sind:
Hoffe, dies wird der Anfang sein für das, was Sie brauchen,
InformationsquelleAutor der Antwort sfat