2015-01-16 11 views
1

Я попытался настроить sencha cmd в Maven, используя плагин mojo. Maven конфигурации выглядит следующим образом:Как построить проект ExtJS с 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> 

Моя структура проекта выглядит: enter image description here

Я установил переменную окружения SENCHA_CMD=C:\Users\yura\bin\Sencha\Cmd\5.1.0.26 (в моем случае я использую ОС Windows). Когда я пытаюсь выполнить команду mvn:compile я получаю ошибку:

Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (sencha-compile) on project vehicle-store: Command execution failed. Cannot run program "C:\Users\yura\bin\Sencha\Cmd\5.1.0.26" (in directory "C:\Users\yura\Dropbox\Programming\Java\Projects\IntelliJ\VehicleStore"): CreateProcess error=5, Îòêàçàíî â äîñòóïå -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.2:exec (sencha-compile) on project vehicle-store: Command execution failed. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) at 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) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) at org.codehaus.classworlds.Launcher.main(Launcher.java:46) Caused by: org.apache.maven.plugin.MojoExecutionException: Command execution failed. at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:308) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) ... 20 more Caused by: java.io.IOException: Cannot run program "C:\Users\yura\bin\Sencha\Cmd\5.1.0.26" (in directory "C:\Users\yura\Dropbox\Programming\Java\Projects\IntelliJ\VehicleStore"): CreateProcess error=5, Îòêàçàíî â äîñòóïå at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) at java.lang.Runtime.exec(Runtime.java:617) at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:277) at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:334) at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:164) at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:746) at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:292) ... 22 more Caused by: java.io.IOException: CreateProcess error=5, Îòêàçàíî â äîñòóïå at java.lang.ProcessImpl.create(Native Method) at java.lang.ProcessImpl.(ProcessImpl.java:385) at java.lang.ProcessImpl.start(ProcessImpl.java:136) at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) ... 29 more

Как я могу исправить ошибку?

ответ

2

На самом деле это не прямой ответ, но, возможно, это дает вам представление. Идея заключается в том, что за IOException есть полезное сообщение об ошибке на вашем языке. Согласно тому, что я видел, я предположил, что вы из Уркаина и используете Windows. Поэтому я просмотрел страницу Windows по умолчанию для Windows. это принес мне here. Поскольку java основан на Unicode, а Unicode основан на ISO8859-1, я использовал эту небольшую программу для повторного кодирования сообщения.

byte[] bytes = "Îòêàçàíî â äîñòóïå".getBytes("ISO8859-1"); 
    System.out.println(new String(bytes, "Windows-1251")); 

результат был:

Отказано в доступе 

Что Google переводит мне как доступ запрещен.

Однако в дополнении к этому очень интересному материалу кодирования отображается сообщение

Cannot run program "C:\Users\yura\bin\Sencha\Cmd\5.1.0.26"

и это скорее выглядит как каталог, чем как команда. Может ли это значение быть неправильным?

+0

Вы [Колумбо] (http://ru.wikipedia.org/wiki/Columbo) (в хорошем смысле). Вы правы, это значение неверно. И вы даете мне понять, что не так. Спасибо за ответ. – fidel150992

+0

Я изменил путь к sencha cmd в maven: ' $ {env.SENCHA_CMD_3_0_0} /sencha.exe', путь к ext-js' $ {basedir}/src/main/webapp/ext 'и установить мой пользователь учетной записи как администратора в Windows (потому что я получил ошибку: доступ запрещен). В конце концов, я получил новую ошибку: '[ERR] Пожалуйста, убедитесь, что эта команда выполнена из допустимого каталога приложений [ERR] Не удалось найти свойство конфигурации app.dir из sencha.cfg'. Я использую версию ext-js 5.0.1.1255 и версию cmd 5.0.1.231. Может быть, у кого-то есть идеи, как я могу исправить последний? – fidel150992

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.

Смежные вопросы