【发布时间】:2012-01-12 21:50:34
【问题描述】:
我正在考虑摆脱 Maven。对于简单的应用程序来说没问题,但是我遇到了我无法解决的问题,似乎没有其他人能够解决它们,甚至 Maven 邮件列表也没有解决方案。
有哪些现代的 Java 构建工具可以提供 Maven 所提供的功能,同时也能够应对制作现代 Web 应用程序的挑战?例如,如果我想使用 Javascript 压缩工具,例如 YUI 压缩器,它可以让我在创建 War 文件之前轻松轻松地压缩/聚合我的 css 和 javascript。
-
说明:maven的问题是war插件里面没有办法做事。例如,我想在 yui 压缩器复制 webapp 的资源(css、图像、javascripts 等)之后调用它。如果我能做到这一点,它将确保任何未压缩的 javascript 文件(在 YUI 压缩器的缩小/聚合过程中被排除)是最终战争包的一部分。这是不可能的
YUI 压缩器仅在您计划压缩和/或聚合所有文件而不是子集时才有效。有像
jscharts.js这样的 javascript 文件,您需要将它们从缩小过程中排除,否则它们会弄乱实际的源代码。尽管解决方案很简单,但在 Maven 中无法处理此用例。
能够使用实时 javascript 与压缩/聚合 javascript 也将是一大福音。
-
说明:用 html 文件中的内容重构大量 javascript 包含也很困难。假设您有 100 个 javascript 文件,并且您希望能够使用实时 javascript 文件进行开发,但您希望将压缩/聚合的文件用于生产。您仍然需要在 html 模板(例如 freemarker)中包含所有 javascript 文件,因为您想在开发期间处理实时文件。对于生产,您还必须在 maven
pom.xml中维护一个单独的列表,以便聚合它们。这两个 javascript 文件列表基本上是相同的,对于开发人员来说,确保它们包含相同的文件并以相同的顺序是一个额外的负担 :( Maven 无法帮助解决这种常见的网络相关问题2011 年。Rails 3.1 的人虽然免费获得这个。我们可以做得更好。
我仍然需要拥有过滤器的能力,就像在 Maven 中一样,以处理不同的生产环境。例如,我经常使用属性文件来更改 Spring 的 applicationContext.xml 或 servlet 上下文中的值。
我还需要向类路径添加资源的能力。我有这些庞大的文本文件,它们为我提供了字典、同义词库等的基本功能。我需要将它们放在我的类路径中。
如果构建工具也使用 Maven 存储库,那就太好了。
任何其他好处,例如更简单和编写更少的配置代码将是一个加分项,但我上面列出的功能是最重要的。
谢谢。
【问题讨论】:
-
你能提到你所指的问题吗?
-
@Alejandro Diaz 主要是我提到的 javascript 内容。我已经花了几天时间试图让它工作。我提出了 6 个解决方法,但每个人都提出了另一个我不会解决的问题。我想要一些考虑到这一点的东西。我不想变通。即使有解决方案(似乎没有人知道),我认为这不是一个好兆头,需要几天时间才能解决。这有点疯狂。
-
我曾经在一个大项目中工作过,我们使用的是 YUI 压缩器 + 资源版本控制。我不记得它有问题(我说的是一个大项目......)还有其他很酷的工具......但是,Maven 被广泛使用并且易于扩展。可能一个好主意是想出自己的自定义插件,而不是花几天时间寻找解决方法。我并不是说 Maven 是每个人的答案……但是,您已经在使用它了。
-
@Alejandro Diaz 我将不得不采用插件方法。 maven 的问题是无法在 war 插件内部做事。例如,我想在复制资源后立即调用 yui 压缩器。这将确保任何未压缩的 javascript 文件(被排除在外)都是最终战争的一部分。 YUI 压缩器仅在您计划压缩和/或聚合每个文件时才有效,但对于像
jscharts.js这样的一些 javascript 文件,您不能这样做,因为它会搞砸。用 html 文件中的内容重构大量 javascript 包含也很困难。 -
@Alejandro Diaz 让我进一步解释一下。假设您有 100 个 javascript 文件,并且您希望能够使用实时 javascript 文件进行开发,但您希望将压缩/聚合的文件用于生产。您仍然需要在 html 模板(例如 freemarker)中包含所有 javascript 文件,并且您还必须在 maven
pom.xml中维护一个单独的列表。这些列表基本上是相同的,确保它们包含相同的文件并以相同的顺序对我来说是一个额外的负担:( Maven 在 2011 年没有帮助解决如此常见的网络相关问题。
标签: java javascript maven build