gpt4 book ai didi

shell - maven在Linux和Windows平台上调用外部脚本

转载 作者:行者123 更新时间:2023-12-02 11:06:38 27 4
gpt4 key购买 nike

我需要在 Linux 和 MS-Windows 平台上运行外部脚本。

  1. 我使用正确的插件吗exec-maven-plugin
  2. 有更合适的插件吗?
  3. 我应该在 <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 两个平台

我的脚本 compile-jni.bat :

call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
bash -c "make"

我的脚本 compile-jni.sh :

#!/bin/sh
make

更新:

两位同事提出了替代方案:

  1. 使用变量 script.extension更改<executable>./compile-jni${script.extension}</executable>pom.xml并在命令行中附加变量 mvn compile -Dscript.extention=.bat

  2. 或者在调用maven之前设置Visual Studio环境变量:

    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 用户可能会陷入困境...我仍在寻找一种自动且优雅的解决方案...

最佳答案

最后,我混合了这些想法 => <profiles>用于设置内部变量 script.extension取决于操作系统:

<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>

然后我使用变量来完成脚本文件名:

<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>


  ⚠   正如 Maksim 所注意到的对于 Maven 3.5.4,向上移动该部分 <configuration>如下图:  
 

<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>

我已将工作目录从 pom.xml 移至到 shell 脚本。为了简化维护,常用的东西都移到了这个shell script中。因此,批处理文件使用这个shell脚本:

<强> compile-jni.bat :

call "%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
bash compile-jni.sh

<强> compile-jni.sh :

#!/bin/sh
cd src/main/cpp
make

关于shell - maven在Linux和Windows平台上调用外部脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14809931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com