我已经配置建立和使用Maven运行项目。 该项目依赖于特定平台的本地库,而且我发现使用策略这里来管理这些依赖关系。
本质上, .dll
或.so
针对特定平台的文件被打包成一个罐子,并推到Maven的服务器用的分类器识别目标平台。 Maven的依赖性,插件,然后解压缩特定于平台的罐子,并复制本地库到目标文件夹。
通常我会用mvn exec:java
运行Java程序,但exec:java
运行在同一个JVM的Maven,它使我从修改类路径的应用程序。 由于本机的依赖必须添加到classpath中,我不得不使用mvn exec:exec
代替。 这是POM的相关片段:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Djava.library.path=target/lib</argument>
<argument>-classpath</argument>
<classpath />
<argument>com.example.app.MainClass</argument>
</arguments>
</configuration>
</plugin>
...
这工作正常的应用程序的默认配置,但我希望能够在命令行中指定一些可选参数。 理想情况下,我想这样做:
mvn exec:exec -Dexec.args="-a <an argument> -b <another argument>"
不幸的是,指定exec.args
变量将覆盖我的POM(这是建立在类路径和运行应用程序所需)的参数。 有没有解决的办法? 什么是不覆盖我有什么POM中指定在命令行的一些可选参数的最佳方式?