Maven Befehl in Fledermaus

896
Supercim

Ich muss ein Maven-Projekt von der Kommandozeile aus mit diesem Befehl ausführen und funktioniert einwandfrei:

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 

Ich erstelle eine .bat-Datei, um den Befehl schnell auszuführen, aber ich erhalte eine Fehlermeldung.

Meine .bat-Datei besteht aus:

@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" 

Dabei ist "c: \ dev \ mavproj" das Verzeichnis, in dem stay maven project gespeichert ist, und die .bat-Datei heißt test.bat.

Ich erhalte folgende Fehlermeldung: "Die Syntax des Befehls ist falsch".

Nun, ich erstelle eine neue Datei .bat und füge sie nur ein

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

und der Befehl mvn wird ausgeführt.

Der Inhalt von 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% 

Wo ich falsch liege

Danke im Voraus.

0
Wenn Sie eine CD in C: \ Programme \ apache-maven-3.6.0 \ bin \ erstellen, führen Sie mvn.cmd -Dexec.args = -classpath% classpath com.mycompany.serverrds.serverMainClass -Dexec.executable = "C: \ aus. Programme \ Java \ jdk1.8.0_191 \ bin \ java.exe "funktioniert das? spikey_richie vor 5 Jahren 0
funktioniert nicht ... aber es wird eine Fehlermeldung angezeigt "mvn -Dexec.args =" - classpath 'wird nicht als interner oder externer Befehl erkannt; Supercim vor 5 Jahren 0
OK, Sie müssen diesen Fehler beheben, bevor Ihre vollständige Stapeldatei funktioniert. spikey_richie vor 5 Jahren 0
Ja, aber der Befehl funktioniert einwandfrei, wenn ich die Eingabeaufforderung ausführte. Ich erhalte diesen Fehler in einem Bat. Ich versuche, dem Zeichen "-" zu entkommen, aber es funktioniert nicht Supercim vor 5 Jahren 0
Bitte [bearbeiten] Sie die Frage und fügen Sie den Inhalt von `mvc.cmd 'hinzu. Wie lautet der Name der von Ihnen erstellten Batchdatei? DavidPostill vor 5 Jahren 0

1 Antwort auf die Frage

0
Supercim

Ich habe mit ProcessExplorer von Sysinternal und Netbeans aufgelöst: Ich führe ein Programm in den Netbeans aus und kopiere die Eingabeaufforderung als:

Nachdem ich den Befehl zum Ändern des Verzeichnisses von maven eingestellt habe, funktioniert works.fine.

Die neue Bat-Datei lautet:

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" 

Beachten Sie das "%%" im Klassenpfad, um die Bat-Datei korrekt auszuführen.