我尝试使用mojo插件在Maven中配置sencha cmd 。 Maven配置如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>sencha-compile</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<!-- Set path to your Sencha Cmd executable-->
<executable>${env.SENCHA_CMD}</executable>
<arguments>
<argument>-sdk</argument>
<argument>${basedir}/src/main/webapp</argument>
<argument>app</argument>
<argument>build</argument>
<argument>--clean</argument>
<argument>--environment</argument>
<argument>${sencha.env}</argument>
<argument>--destination</argument>
<argument>${basedir}/src/main/webapp/build</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
我的项目结构看起来是:
我设置了环境变量SENCHA_CMD=C:\Users\yura\bin\Sencha\Cmd\5.1.0.26
(在我的情况下,我使用的是Windows操作系统)。
当我尝试执行mvn:compile
命令时,我收到错误:
无法在项目车辆存储上执行目标org.codehaus.mojo:exec-maven-plugin:1.3.2:exec(sencha-compile):命令执行失败。无法运行程序“C:\ Users \ yura \ bin \ Sencha \ Cmd \ _ 5.1.0.26”(在目录“C:\ Users \ yura \ Dropbox \ Programming \ Java \ Projects \ IntelliJ \ VehicleStore”中):CreateProcess error = 5 ,Îòêàçàíîâîîñòóïå - &gt; [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目车辆存储上执行目标org.codehaus.mojo:exec-maven-plugin:1.3.2:exec(sencha-compile):命令执行失败。 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 在org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 在org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在org.apache.maven.cli.MavenCli.main(MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) 在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 在org.codehaus.classworlds.Launcher.main(Launcher.java:46) 引起:org.apache.maven.plugin.MojoExecutionException:命令执行失败。 在org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:308) 在org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 在org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ......还有20个 引起:java.io.IOException:无法运行程序“C:\ Users \ yura \ bin \ Sencha \ Cmd \ _ 5.1.0.26”(在目录“C:\ Users \ yura \ Dropbox \ Programming \ Java \ Projects \ IntelliJ”中\ VehicleStore“):CreateProcess error = 5,Îòêàçàíîâîîñòóïåå 在java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 在java.lang.Runtime.exec(Runtime.java:617) 在org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) 在org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:277) 在org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:334) 在org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:164) 在org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:746) 在org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:292) ......还有22个 引起:java.io.IOException:CreateProcess error = 5,Îòêàçàíîâîîñòóïåå at java.lang.ProcessImpl.create(Native Method) 在java.lang.ProcessImpl。(ProcessImpl.java:385) 在java.lang.ProcessImpl.start(ProcessImpl.java:136) 在java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) ... 29更多
如何解决错误?
答案 0 :(得分:2)
事实上,这不是一个直接的答案,但也许它会给你一个想法。我的想法是,在IOException背后,您的语言中有一条有用的错误消息。根据我所看到的假设,你来自Urkaine并使用Windows。所以我查找了乌克兰的默认Windows代码页。这让我here。由于java基于Unicode而Unicode基于ISO8859-1,因此我使用这个小程序重新编码消息。
byte[] bytes = "Îòêàçàíî â äîñòóïå".getBytes("ISO8859-1");
System.out.println(new String(bytes, "Windows-1251"));
结果是:
Отказано в доступе
Google将其视为拒绝访问权限。
然而,除了这个非常有趣的编码内容,我还看到了消息
无法运行程序&#34; C:\ Users \ yura \ bin \ Sencha \ Cmd \ _5.1.0.26&#34;
这看起来像一个目录,而不是一个命令。这个值可能是错的吗?
答案 1 :(得分:2)
我修正了错误,如下所示:已下载新版ExtJS(5.1.0.107)
和sencha cmd(5.1.0.26)
。然后我更改了sencha cmd configuration
中的maven
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<id>sencha-compile</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<!-- Set path to your Sencha Cmd executable-->
<executable>${env.SENCHA_CMD_3_0_0}/sencha.exe</executable>
<arguments>
<!-- Sets the directory from which commands should execute using command -->
<argument>--cwd</argument>
<argument>${basedir}/src/main/webapp</argument>
<argument>app</argument>
<argument>build</argument>
<argument>--clean</argument>
<argument>--environment</argument>
<argument>${sencha.env}</argument>
<argument>--destination</argument>
<argument>${basedir}/src/main/webapp/build</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
重要提示:请勿为-sdk
命令指定sencha app
参数。有关详细信息,请参阅here。而不是那样,我使用--cwd
命令设置应该从中执行命令的目录。