Maven команда в летучую мышь

508
Supercim

Я должен запустить проект Maven из командной строки с этой командой и отлично работает:

mvn -Dexec.args="-classpath %classpath com.mycompany.serverrds.serverMainClass" -Dexec.executable="C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec 

Я создаю файл .bat для быстрого выполнения команды, но получаю ошибку;

мой .bat файл состоит из:

@echo_off  cd c:\xyz\  "C:\Program Files\apache-maven-3.6.0\bin\mvn.cmd" -Dexec.args=-classpath %classpath com.mycompany.serverrds.serverMainClass -Dexec.executable="C:\Program Files\Java\jdk1.8.0_191\bin\java.exe" 

где "c: \ dev \ mavproj" - это каталог, в котором находится проект maven, а файл .bat называется test.bat.

Я получаю эту ошибку: «синтаксис команды неверен».

Ну, я создаю новый файл .bat, и я вставил только

"C:\Program Files\apache-maven-3.6.0\bin\mvn.cmd" 

и команда mvn выполняется нормально.

Содержание mvn.cmd:

 @REM Licensed to the Apache Software Foundation (ASF) under one @REM or more contributor license agreements. See the NOTICE file @REM distributed with this work for additional information @REM regarding copyright ownership. The ASF licenses this file @REM to you under the Apache License, Version 2.0 (the @REM "License"); you may not use this file except in compliance @REM with the License. You may obtain a copy of the License at @REM @REM http://www.apache.org/licenses/LICENSE-2.0 @REM @REM Unless required by applicable law or agreed to in writing, @REM software distributed under the License is distributed on an @REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @REM KIND, either express or implied. See the License for the @REM specific language governing permissions and limitations @REM under the License.  @REM ----------------------------------------------------------------------------- @REM Apache Maven Startup Script @REM @REM Environment Variable Prerequisites @REM @REM JAVA_HOME Must point at your Java Development Kit installation. @REM MAVEN_BATCH_ECHO (Optional) Set to 'on' to enable the echoing of the batch commands. @REM MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending. @REM MAVEN_OPTS (Optional) Java runtime options used when Maven is executed. @REM MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files. @REM -----------------------------------------------------------------------------  @REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' @echo off @REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' @if "%MAVEN_BATCH_ECHO%"=="on" echo %MAVEN_BATCH_ECHO%  @REM Execute a user defined script before this one if not "%MAVEN_SKIP_RC%"=="" goto skipRcPre @REM check for pre script, once with legacy .bat ending and once with .cmd ending if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" :skipRcPre  @setlocal  set ERROR_CODE=0  @REM ==== START VALIDATION ==== if not "%JAVA_HOME%"=="" goto OkJHome for %%i in (java.exe) do set "JAVACMD=%%~$PATH:i" goto checkJCmd  :OkJHome set "JAVACMD=%JAVA_HOME%\bin\java.exe"  :checkJCmd if exist "%JAVACMD%" goto chkMHome  echo The JAVA_HOME environment variable is not defined correctly >&2 echo This environment variable is needed to run this program >&2 echo NB: JAVA_HOME should point to a JDK not a JRE >&2 goto error  :chkMHome set "MAVEN_HOME=%~dp0.." if not "%MAVEN_HOME%"=="" goto stripMHome goto error  :stripMHome if not "_%MAVEN_HOME:~-1%"=="_\" goto checkMCmd set "MAVEN_HOME=%MAVEN_HOME:~0,-1%" goto stripMHome  :checkMCmd if exist "%MAVEN_HOME%\bin\mvn.cmd" goto init goto error @REM ==== END VALIDATION ====  :init  set MAVEN_CMD_LINE_ARGS=%*  @REM Find the project basedir, i.e., the directory that contains the folder ".mvn". @REM Fallback to current working directory if not found.  set "MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%" if not "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir  set "EXEC_DIR=%CD%" set "WDIR=%EXEC_DIR%"  @REM Look for the --file switch and start the search for the .mvn directory from the specified @REM POM location, if supplied.  set FILE_ARG= :arg_loop if "%~1" == "-f" ( set "FILE_ARG=%~2" shift goto process_file_arg ) if "%~1" == "--file" ( set "FILE_ARG=%~2" shift goto process_file_arg ) @REM If none of the above, skip the argument shift if not "%~1" == "" ( goto arg_loop ) else ( goto findBaseDir )  :process_file_arg if "%FILE_ARG%" == "" ( goto findBaseDir ) if not exist "%FILE_ARG%" ( echo POM file %FILE_ARG% specified the -f/--file command-line argument does not exist >&2 goto error ) if exist "%FILE_ARG%\*" ( set "POM_DIR=%FILE_ARG%" ) else ( call :get_directory_from_file "%FILE_ARG%" ) if not exist "%POM_DIR%" ( echo Directory %POM_DIR% extracted from the -f/--file command-line argument %FILE_ARG% does not exist >&2 goto error ) set "WDIR=%POM_DIR%" goto findBaseDir  :get_directory_from_file set "POM_DIR=%~dp1" :stripPomDir if not "_%POM_DIR:~-1%"=="_\" goto pomDirStripped set "POM_DIR=%POM_DIR:~0,-1%" goto stripPomDir :pomDirStripped exit /b  :findBaseDir cd /d "%WDIR%" :findBaseDirLoop if exist "%WDIR%\.mvn" goto baseDirFound cd .. IF "%WDIR%"=="%CD%" goto baseDirNotFound set "WDIR=%CD%" goto findBaseDirLoop  :baseDirFound set "MAVEN_PROJECTBASEDIR=%WDIR%" cd /d "%EXEC_DIR%" goto endDetectBaseDir  :baseDirNotFound if "_%EXEC_DIR:~-1%"=="_\" set "EXEC_DIR=%EXEC_DIR:~0,-1%" set "MAVEN_PROJECTBASEDIR=%EXEC_DIR%" cd "%EXEC_DIR%"  :endDetectBaseDir  set "jvmConfig=\.mvn\jvm.config" if not exist "%MAVEN_PROJECTBASEDIR%%jvmConfig%" goto endReadAdditionalConfig  @setlocal EnableExtensions EnableDelayedExpansion for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a @endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%  :endReadAdditionalConfig  for %%i in ("%MAVEN_HOME%"\boot\plexus-classworlds-*) do set CLASSWORLDS_JAR="%%i" set CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher  "%JAVACMD%" ^ %JVM_CONFIG_MAVEN_PROPS% ^ %MAVEN_OPTS% ^ %MAVEN_DEBUG_OPTS% ^ -classpath %CLASSWORLDS_JAR% ^ "-Dclassworlds.conf=%MAVEN_HOME%\bin\m2.conf" ^ "-Dmaven.home=%MAVEN_HOME%" ^ "-Dlibrary.jansi.path=%MAVEN_HOME%\lib\jansi-native" ^ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS% if ERRORLEVEL 1 goto error goto end  :error set ERROR_CODE=1  :end @endlocal & set ERROR_CODE=%ERROR_CODE%  if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost @REM check for post script, once with legacy .bat ending and once with .cmd ending if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" :skipRcPost  @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' if "%MAVEN_BATCH_PAUSE%"=="on" pause  if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%  cmd /C exit /B %ERROR_CODE% 

Где я не прав?

Заранее спасибо.

0
если вы компакт-диск в C: \ Program Files \ apache-maven-3.6.0 \ bin \, запустите mvn.cmd -Dexec.args = -classpath% classpath com.mycompany.serverrds.serverMainClass -Dexec.executable = "C: \ Program Files \ Java \ jdk1.8.0_191 \ bin \ java.exe "это работает? spikey_richie 5 лет назад 0
не работает ... но появляется ошибка "mvn -Dexec.args =" - classpath 'не распознается как внутренняя или внешняя команда; Supercim 5 лет назад 0
Хорошо, так что вам нужно исправить эту ошибку, прежде чем ваш полный пакетный файл будет работать. spikey_richie 5 лет назад 0
Да, но команда работает нормально, если я запускаю в командной строке, я получаю эту ошибку в виде летучей мыши. Я пытаюсь убежать от символа "-", но не работаю Supercim 5 лет назад 0
Пожалуйста, отредактируйте вопрос и включите содержимое `mvc.cmd`. Кроме того, как называется созданный вами пакетный файл? DavidPostill 5 лет назад 0

1 ответ на вопрос

0
Supercim

Я решил использовать ProcessExplorer Sysinternal и Netbeans: я запускаю программу в netbeans и копирую команду командной строки как:

После того, как я настроил команду, меняющую каталог maven, works.fine.

Новый файл bat:

cd "C:\sviluppo_software\rdsServerMav" "cmd" /c ""C:\Program Files\apache-maven-3.6.0\bin\mvn.cmd" -Dexec.args="-classpath %%classpath com.mycompany.serverrds.serverMainClass" -Dexec.executable="C:\Program Files\Java\jdk1.8.0_152\bin\java.exe" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec" 

Чтобы заметить "%%" в classpath для правильного выполнения файла bat.