Maven/Dojo 最佳实践问题

4
感谢任何建议和经验教训。
情况:我的公司有多个Web应用程序,都使用Dojo。它们都有自定义配置文件的Dojo构建版本,这些版本已经被检入到Web应用程序源代码中。我们发现多年来,某人在一个或多个Web应用程序中对这些生成的文件进行了一些编码更改。感谢上帝,这些更改并不重要。
我们想要做的是:不将它们检入Web应用程序源代码中。我们想要在构建时从Maven仓库中取出它们。
我的困境是什么是最佳的方法来构建多个版本的Dojo并将它们放入Maven仓库?我们希望: 组ID为com.mycompany.web artifactId为ApplicationDojo 版本号基于Dojo版本。
我可以使用命令行构建脚本来生成Dojo构建输出,将其压缩,然后使用mvn install或mvn deploy将zip文件放入存储库。但那不是真正优雅或容易记住下次需要重新构建和部署时该怎么做。特别是如果我不再在公司。
我希望Maven能够针对几个不同的配置文件运行构建,然后将它们部署到上述组件版本。由于这是分类为源代码的源代码。组装件是否是完成此操作的方法?
我已经找到了有关如何运行Dojo的配置文件版本的帖子,但那只适用于我从Web应用程序中构建版本。我不想构建Web应用程序,我想使用一些参数运行Dojo构建脚本。我该使用哪个插件来完成这个任务?
对此如何做,存在什么问题,有没有更好的建议?
4个回答

2

我见过最简单的方法是在编译时添加dojo。这样可以避免将其存储在您自己的scm中,并且还允许您配置不同的配置文件,指定要捆绑的dojo版本。以下Maven XML块显示如何将dojo添加到您的构件中的“js”文件夹中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpackDojo</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.dojotoolkit</groupId>
                                <artifactId>dojo</artifactId>
                                <version>1.8.0</version>
                                <type>zip</type>
                                <outputDirectory>
                                    ${basedir}/target/${project.build.finalName}-${project.version}/js
                                </outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

1

最简单的选择可能是让所有客户端在运行时使用浏览器下载

Google已经为我们托管了相当多可靠且快速的JavaScript库

我采用这种方法,而不是打包自己的Dojo工具包并从自己的服务器提供服务。

Google服务器可能更快,而且我的公司Web缓存会在第一次命中后提供所有内容。


啊,抱歉。我看到你正在使用修改版的Dojo。在这种情况下,您确实需要使用Maven依赖插件将zip文件解压缩到目标目录中: http://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-artifacts.html然而,我真的要质疑为什么你要使用修改版的Dojo!如果您的更改真的很重要,为什么不尝试将它们贡献回去呢?这样,您可以减少分发自己版本的痛苦,并同时为Dojo社区做出贡献。 - David B

0

可以使用bower/grunt来设置dojo构建并按需下载依赖项。可以通过https://www.npmjs.org/package/generator-dojo实现示例配置。然后有一个maven grunt插件:https://github.com/allegro/grunt-maven-plugin,因此您可以从maven触发构建,并创建例如webjar(类似于webjars.org),并将其用作服务器项目的依赖项。

优点是:

  • grunt提供了一些“实时”调试功能
  • 客户端和服务器代码的清晰分离
  • 不需要将任何dojo代码检入您的VCS

缺点可能是这种构建过程的IDE支持。因此,通常原型设计工作最好不要进行构建优化,而是直接在服务器项目中包含dojo webjars并在“public”文件夹中编写代码。

在两种情况下,第一个目标是避免将数千个dojo文件检入Git。


0

似乎没有最佳实践或真正的经验教训。

简单粗暴似乎是最容易的方法。构建所有归档文件(zip / jar / war ...)并执行Maven部署的脚本似乎是最简单的。

使用组件是一种优雅的方式。我的尝试...不太容易。没有足够的时间以正确的方式学习它。必须在完成交付后进行尝试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接