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