Finally, I mixed the ideas => the <profiles>
are used to set an internal variable script.extension
depending on the operating system:
<profiles>
<profile>
<id>Windows</id>
<activation>
<os>
<family>Windows</family>
</os>
</activation>
<properties>
<script.extension>.bat</script.extension>
</properties>
</profile>
<profile>
<id>unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<script.extension>.sh</script.extension>
</properties>
</profile>
</profiles>
Then I use the variable to complete the script filename:
<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${script.extension}</executable>
</configuration>
</execution>
</executions>
</plugin>
? As noticed by Maksim for maven 3.5.4 move up the section <configuration>
as shown below:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<configuration>
<executable>./compile-jni${script.extension}</executable>
</configuration>
<version>1.2.1</version>
<executions>
<execution>
<id>compile-jni</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
</plugin>
I have moved the working directory from the pom.xml
to the shell script. In order to simplify maintenance, the common stuff is moved within this shell scrip. Therefore, the batch file use this shell script:
compile-jni.bat
:
call "%ProgramFiles(x86)%Microsoft Visual Studio 10.0VCvcvarsall.bat" x86
bash compile-jni.sh
compile-jni.sh
:
#!/bin/sh
cd src/main/cpp
make
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…