有人将 ExtJs 4 与 maven 一起使用吗?就目前而言,Sencha SDK 工具仅适用于已部署并启动的 webapp(它是一个 java webapp),即使在这种情况下,生成的 app-all.js 也不包含所有依赖项,并且 Ext 下载了大量的 dep。在运行时。我需要的是在构建过程中以某种方式集成生产文件生成。
2 回答
您可以像提供其他资源(html、图像、css、其他 javascript)一样提供资源(在本例中为 Ext JS 4)。
有一些解决方案或想法如何提供 Maven 解决方案。
- https://github.com/ffrr/extjs-maven-plugin
- http://www.sencha.com/forum/showthread.php?179849-New-to-ExtJS-with-Maven
- http://www.sencha.com/forum/showthread.php?192915
除此之外,最新版本将是 Sencha Cmd 3(以前称为 SDK Tools),请查看http://www.sencha.com/forum/forumdisplay.php?8-Sencha-Cmd
--
在我看来,你可以坚持使用简单的方法来添加资源之类的东西。如果要构建,可以在 Maven 中执行脚本和/或 Sencha SDK/Cmd 可执行文件(例如 maven-exec-plugin)。
所以,如果你认为会有一个简单的 Sencha Maven 插件直接从 pom.xml 初始化 SDK 工具:不。;)
您可以使用 Sencha CMD 使用 Maven 构建您的 Sencha ExtJS 项目。这很容易。检查我的示例项目 Sencha ExtJS 5 + Sencha Cmd 5 + Maven:
https://github.com/dobromyslov/sencha-extjs-maven
Sencha ExtJS 5.0 BETA目前可用。阅读Sencha CMD 文档并在实践中尝试。
然后只需将您的项目放在webapp
文件夹中并使用exec-maven-plugin
Sencha CMD 构建您的 ExtJS 应用程序,如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<id>sencha-compile</id>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<!-- Set path to your Sencha Cmd executable-->
<executable>../Sencha/Cmd/5.0.0.116/sencha</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>
如果要从生成的 WAR 文件中清除不必要的文件,请使用maven-war-plugin
配置的排除项,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>src/main/webapp/build/${sencha.env}/MyApp</directory>
<excludes>
<exclude>**/Readme.md</exclude>
</excludes>
</resource>
</webResources>
<packagingExcludes>.sencha/**,app/**,build/**,ext/**,overrides/**,packages/**,sass/**,bootstrap.css,bootstrap.js,bootstrap.json,build.xml,Readme.md</packagingExcludes>
</configuration>