Como executar o Maven a partir de outro diretório (sem cd no diretório do projeto)?
248
Supondo que meu projeto maven esteja localizado /some/location/projecte que minha localização atual seja /another/location/como executar a construção do maven sem alterar a localização do projeto cd /some/location/project?
@khmarbaise - Estou tentando automatizar a compilação e implantações usando alguns scripts de shell e não é fácil sempre usar o cd para alterar o diretório.
Ali Shakiba
@khmarbaise - você pode se referir a vários arquivos ou pastas em um diretório ou próximo a ele, mas seu pom e arquivos a que ele se refere estão em outro.
Jyoungdev 01/11
Respostas:
432
Você pode usar o parâmetro -fe especificar o caminho para o seu arquivo pom, por exemplomvn -f /path/to/pom.xml
Isso executa o maven "como se" estivesse no /path/todiretório de trabalho.
Não, -f inicia o Maven com esse pom específico e, por definição, o diretório em que o pom está, é o diretório de trabalho do Maven. Eu uso isso no meu CI-Server para criar módulos específicos em subdiretórios e posso garantir que funciona.
dunni
15
Use um ponto para caminhos relativos. por exemplo./path/pom.xml
Snekse 6/13
3
Como diz dunni, isso não funciona. O diretório atual é onde você está. Você está apenas usando um pom em outro diretório. Maven não suporta isso.
Nevoeiro
1
java.lang.IllegalArgumentException: Parâmetro 'diretório' não é um diretório
Damir Olejar
Trabalha para a maioria dos meus projetos. Infelizmente, alguns projetos que usam o plug-in exec não podem ser criados dessa maneira porque o plug-in não encontra o executável, mesmo que o diretório de trabalho esteja configurado.
precisa saber é o seguinte
15
Não acho que o maven apóie isso. Se você estiver no Unix e não quiser deixar seu diretório atual, poderá usar um pequeno script de shell, uma função de shell ou apenas um sub-shell:
Sei que isso não responde à pergunta específica, mas pode fornecer o que você procura. Não estou familiarizado com o shell do Windows, embora você também deva encontrar uma solução semelhante.
Excelente. mvn -f param não funciona com projetos de múltiplos módulos usando o caminho relativo para referenciar os poms filhos. Obrigado, era o que eu estava procurando.
Redochka 11/04
1
Tenho isso funcionando no Mac (e eu sei que funcionará no Linux). No Windows (ou em qualquer plataforma), você poderá salvar o caminho atual, cd no seu projeto, fazer coisas mvn lá e voltar ao cd em um script. O único problema seria se o script parasse no meio do caminho.
Erk
8
Para mim, funciona desta maneira: mvn -f /path/to/pom.xml [goals]
Respostas:
Você pode usar o parâmetro
-f
e especificar o caminho para o seu arquivo pom, por exemplomvn -f /path/to/pom.xml
Isso executa o maven "como se" estivesse no
/path/to
diretório de trabalho.fonte
./path/pom.xml
Não acho que o maven apóie isso. Se você estiver no Unix e não quiser deixar seu diretório atual, poderá usar um pequeno script de shell, uma função de shell ou apenas um sub-shell:
Como uma função bash (que você pode adicionar ao seu ~ / .bashrc):
Sei que isso não responde à pergunta específica, mas pode fornecer o que você procura. Não estou familiarizado com o shell do Windows, embora você também deva encontrar uma solução semelhante.
Saudações
fonte
Para mim, funciona desta maneira:
mvn -f /path/to/pom.xml [goals]
fonte
Você pode tentar isso:
fonte