Argumentos do plugin de lançamento do Maven (-D)

Hoje eu tive alguns problemas para lançar um projeto Maven por meio de um build de integração contínua. O problema é que nossa construção precisa de um executável PhantomJS. O executável não está no PATH do agente CI.

Portanto, o executável deve ser passado como uma propriedade do sistema Java. Para compilações regulares, executar o seguinte comando maven funciona perfeitamente.

mvn clean verify -Dphantomjs.binary.path=/path/to/phantomjs

O problema com o plugin de liberação do maven é que ele bifurca uma compilação do maven para executar metas limpas por meio de verificação e que quaisquer propriedades passadas para o maven não são passadas para o processo bifurcado.

Felizmente, existe uma maneira de especificar os argumentos a serem transmitidos ao processo bifurcado. Como isso não está muito claro na documentação, opto por compartilhar nesta dica.

Para passar argumentos para o processo bifurcado, você deve especificá-los com a argumentspropriedade do sistema.

Portanto, para fazer com que a meta de preparação de liberação do maven passe o caminho do phantomjs para o processo bifurcado, uso o seguinte comando.

mvn release:prepare -Darguments=-Dphantomjs.binary.path=/opt/phantomjs/current/bin/phantomjs