【问题标题】:Maven EAR plugin: Adding generated resourcesMaven EAR 插件:添加生成的资源
【发布时间】:2019-07-28 03:28:48
【问题描述】:

在自定义 Maven 插件中,我使用 MavenProjectaddResource 添加文件作为资源。

这适用于 JAR 项目,但对于 EAR,我看到相关文件被复制到 target/classes,然后被忽略。它不存在于 EAR 中。

有一个 earSourceDirectory 属性,我可能可以通过将其设置为 target/classes 来“欺骗”Maven,但这似乎是错误的方式。

如何处理应打包到 EAR 中的生成资源?

【问题讨论】:

  • 你能解释一下你需要添加什么样的生成资源吗?我想你没有把它们放在正确的位置?
  • @khmarbaise 在构建期间,我们在我们自己的 Maven 插件中生成一个属性文件(具有各种构建属性)。该文件应放入工件中(在顶层)。为此,我们使用addResource。这适用于罐子,但不适用于耳朵。所以这是关于在 Maven 插件中生成的属性文件。

标签: maven ear maven-resources-plugin maven-ear-plugin


【解决方案1】:

Maven EAR 插件完全不考虑可以为给定工件设置的所有“资源”目录。相反,正如您所提到的,它仅依赖于 earSourceDirectory 属性引用的目录,src/main/application 是默认值。 (见https://maven.apache.org/plugins/maven-ear-plugin/ear-mojo.html#earSourceDirectory

因此,您有两个选择:或者按照您的建议将该属性值更改为指向 target/classes,或者在 src/main/application 下生成您的文件(就像我们为一个项目所做的那样),然后它们将自动被maven-ear-plugin。

【讨论】:

  • 在构建期间在target 之外生成文件似乎是个坏主意。
  • @JFMeier 我们实际上是在generate-resources 阶段生成的,这直接用于该目的(即在将资源放入实际工件之前生成资源)
  • 但是当你生成资源时,你不会把它们写到src/main/resources,是吗?您可以将它们写入target 目录(或其子目录)。
  • 我们确实将这些生成到src/main/resources 并通过.gitignore 中的表达式忽略它们;事实上,我做了一些研究,在这里讨论并回答了一个类似的案例:stackoverflow.com/a/25245051/6131265
  • 谢谢,但是在构建过程中写信给src/main/resources 是一件危险的事情。调用mvn clean时不会整理,开发者可能会尝试手动更改,可能会意外进入SVN等。这对我来说是没有选择的。
猜你喜欢
  • 2013-01-20
  • 2016-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 2022-07-19
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多