Nie można uruchomić programu Maven przy użyciu argumentu ' mvn-d` w programie Microsoft Powershell, ale działa w wierszu polecenia
Próbuję zbudować nasz projekt internetowy z linii poleceń, ale pomijam testowanie. Używam polecenia mvn clean install -Dmaven.test.skip=true
.
Gdy uruchamiam polecenie z tradycyjnego black & white Command Prompt (aka DOS shell) polecenie działa, ale gdy uruchamiam je z polecenia z "Windows PowerShell" dostaję następujący błąd:
[ERROR] Unknown lifecycle phase ".test.skip=true". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-
artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources,
compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepar
e-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy, pre-clean, clean, po
st-clean. -> [Help 1]
Co powoduje tę rozbieżność i jak sprawić, by PowerShell zachowywał się jak tradycyjny Wiersz polecenia?
This is running on Windows 7.
3 answers
Jeśli napotkasz problemy z interpretacją argumentów PowerShell, które mają być przekazywane do EXE konsoli, spróbuj użyć narzędzia echoargs.exe
, które pochodzi z rozszerzenia PowerShell Community. Za pomocą tego narzędzia możesz zobaczyć, jak PowerShell dostarcza argumenty do EXE, np.:
PS> echoargs mvn clean install -Dmaven.test.skip=true
Arg 0 is <mvn>
Arg 1 is <clean>
Arg 2 is <install>
Arg 3 is <-Dmaven>
Arg 4 is <.test.skip=true>
PS> echoargs mvn clean install '-Dmaven.test.skip=true'
Arg 0 is <mvn>
Arg 1 is <clean>
Arg 2 is <install>
Arg 3 is <-Dmaven.test.skip=true>
Krótka odpowiedź - użyj cytowania '-Dmaven.test.skip=true'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 18:55:22
Zgodnie z Ten wątek email :
Ogólnie jeśli używasz Powershell dla Mavena, svn itp kończy się unikanie argumentów zaczynających się od myślnika (-). Na postać ucieczki w Powershell to backtick. Więc kończysz z mvn archetype: create ' - DgroupId=blah '`DartifactId=blah. , "- "jest specjalna postać, która wymaga ucieczki z tyłem podczas biegu maven z konsoli Powershell.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-25 22:38:17
Poniżej działa dla mnie.
$mvnArgs1 ="mvn test -X -Dmaven.test.skip=true".replace('-D','`-D')
Invoke-Expression $mvnArgs1
Wygląda na to, że-D jest rodzajem specjalnej postaci i wymaga ucieczki.
Zauważ również, że –X działa dobrze i nie wymaga ucieczki.
Zwróć uwagę na użycie pojedynczego cudzysłowu w poleceniu replace, jeśli używasz podwójnych cudzysłowów (np.
Używam Powershell 2.0 (2.0.1.1) w windows 7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-14 08:08:11