Usando o Maven 'exec: exec' com Argumentos
Eu tenho um projeto configurado para construir e executar com o Maven. O projeto depende de bibliotecas nativas específicas da plataforma e estou usando a estratégia encontradaAqui para gerenciar essas dependências.
Essencialmente, o.dll
ou.so
Os arquivos de uma determinada plataforma são empacotados em um jar e enviados ao servidor Maven com um classificador que identifica a plataforma de destino. O plug-in maven-dependency, em seguida, descompacta o jar específico da plataforma e copia as bibliotecas nativas para a pasta de destino.
Normalmente eu usariamvn exec:java
para executar um programa Java, masexec:java
executa aplicativos na mesma JVM que o Maven, o que me impede de modificar o caminho de classe. Como as dependências nativas devem ser adicionadas ao caminho de classe, sou forçado a usarmvn exec:exec
em vez de. Este é o trecho relevante do 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>
...
Isso funciona bem para a configuração padrão do aplicativo, mas eu quero ser capaz de especificar alguns parâmetros opcionais na linha de comando. Idealmente, gostaria de fazer algo assim:
mvn exec:exec -Dexec.args="-a <an argument> -b <another argument>"
Infelizmente, especificandoexec.args
variável sobrescreve os argumentos que tenho no pom (que são necessários para configurar o classpath e executar o aplicativo). Existe uma maneira de contornar isso? Qual é a melhor maneira de especificar alguns argumentos opcionais na linha de comando sem sobrescrever o que eu tenho no pom?