【问题标题】:How to build ExtJS project with Maven如何使用 Maven 构建 ExtJS 项目
【发布时间】:2015-03-15 05:24:43
【问题描述】:

我尝试使用 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 错误=5 , Îòêàçàíî âîñòóïå -> [帮助 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) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 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, Îòêàçàíî â äîñòóïå 在 java.lang.ProcessImpl.create(本机方法) 在 java.lang.ProcessImpl.(ProcessImpl.java:385) 在 java.lang.ProcessImpl.start(ProcessImpl.java:136) 在 java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) ... 29 更多

我该如何解决这个错误?

【问题讨论】:

    标签: java maven extjs


    【解决方案1】:

    事实上,这不是一个直接的答案,但也许它会给你一个想法。这个想法是,在 IOException 背后有一个有用的错误消息在你的语言中。根据我所看到的,我假设您来自 Urkaine 并使用 Windows。所以我查找了乌克兰的默认 Windows 代码页。这给我带来了here。由于 java 是基于 Unicode 的,而 Unicode 是基于 ISO8859-1 的,所以我使用这个小程序对消息进行重新编码。

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

    结果是:

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

    Google 将我翻译为拒绝访问。

    但是,除了这个非常有趣的编码内容之外,我还看到了这条消息

    无法运行程序“C:\Users\yura\bin\Sencha\Cmd\5.1.0.26”

    这更像是一个目录,而不是一个命令。这个值会不会出错?

    【讨论】:

    • 你是Columbo(很好)。你是对的,这个值是错误的。你让我知道出了什么问题。感谢您的回复。
    • 我在 maven:&lt;executable&gt;${env.SENCHA_CMD_3_0_0}/sencha.exe&lt;/executable&gt; 中更改了 sencha cmd 的路径,将路径更改为 ext-js&lt;argument&gt;${basedir}/src/main/webapp/ext&lt;/argument&gt; 并在 Windows 中将我的用户帐户设置为管理员(因为我收到错误:访问被拒绝)。毕竟我得到了新的错误:[ERR] Please ensure this command was executed from a valid application directory [ERR] Unable to locate 'app.dir' config property from sencha.cfg。我使用 ext-js 5.0.1.1255 版本和 cmd 5.0.1.231 版本。也许有人有一些想法我该如何解决最后一个?
    【解决方案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>
    

    重要提示:请勿sencha app 命令指定-sdk 参数。详情请参阅here。取而代之的是,我使用--cwd 命令设置了执行命令的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 2023-03-13
      • 2013-02-21
      • 2014-05-16
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多