【问题标题】:Maven: How to write custom plugin to copy static resources?Maven:如何编写自定义插件来复制静态资源?
【发布时间】:2011-04-06 15:15:44
【问题描述】:

我们所有使用 docbook 创建文档的项目在站点生成期间必须在特定目标文件夹结构中具有一组静态资源(图像、css 文件等)。

为了组装这些资源并进行复制,我想编写一个自定义插件,只需将其添加到这些项目中,绑定到适当的生命周期阶段并在执行时复制所有必需的文件。

第一种方法是创建基于 Ant 的插件,因为复制任务写在几行中。但是,Ant 的复制任务会复制文件系统中的内容……但是在执行插件时,资源位于插件的类路径中,而在文件系统中不可用。对吧?

所以我可能确实必须编写一个 MOJO(基于 Java)。我想将资源文件和文件夹从插件的类路径二进制复制到项目的目标文件夹或多或少是一项标准任务,那么我在开发插件时可以获得哪些支持?是否有任何我应该使用的基类或实用程序类,或者我可以从中复制一些代码的任何插件?

【问题讨论】:

标签: ant maven maven-plugin mojo


【解决方案1】:

maven-site-plugin 正是已经具备这种功能。深入了解文档。

【讨论】:

  • 是的,但我不想重复插件配置,也不想在每个项目中包含资源文件。相反,资源和复制逻辑应该封装在一个必须包含在内的插件中。此外,我无法在父 POM 中配置它,因为并非所有项目都共享相同的 POM 层次结构。
  • 我是否正确理解您拥有多个项目使用的资源?如果是这样,您应该考虑创建自己的皮肤,而不是使用 maven-default-skin 来创建网站。
  • 我们已经有了自己的皮肤,所有项目都一样。提到的资源实际上不是站点的一部分,而是在站点构建期间用于生成一些文档文件(例如 PDF)——这些文件又被放入站点中。也就是说,资源不是网站本身的一部分,而是用于构建文档,但仅限于我们的一些项目。
  • 顺便说一句,我已经尝试将资源放入一个单独的 Maven 项目 (JAR) 中,该项目在所有相关项目中都使用 maven-dependency-plugin 解包,但我宁愿两者都做(保持资源并复制它们)在一个插件中...
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多