如何使用Maven构建ExtJS项目

时间:2015-01-16 15:01:10

标签: java maven extjs

我尝试使用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>

我的项目结构看起来是:enter image description here

我设置了环境变量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更多

如何解决错误?

2 个答案:

答案 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命令设置应该从中执行命令的目录。