Мне нужно запустить внешний script на платформах Linux и MS-Windows.
- Использовать ли правильный плагин
exec-maven-plugin
? - Есть ли более подходящий плагин?
-
Какое имя файла следует помещать в
<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>
Я использую тот же Makefile
для обеих платформ Linux/MS-Windows
Мой script compile-jni.bat
:
call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
bash -c "make"
Мой script compile-jni.sh
:
#!/bin/sh
make
UPDATE:
Два коллеги предложили альтернативы:
-
Используйте переменную
script.extension
измените<executable>./compile-jni${script.extension}</executable>
наpom.xml
и добавьте переменную в командной строкеmvn compile -Dscript.extention=.bat
-
или установите переменные среды Visual Studio перед вызовом 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)
Но на обоих решениях пользователи Eclipse могут быть застряли... Я все еще ищу автоматическое и элегантное решение...