【问题标题】:Jar missing generated pom.properties file when built in Eclipse在 Eclipse 中构建时,jar 缺少生成的 pom.properties 文件
【发布时间】:2014-11-28 13:49:13
【问题描述】:

我的项目是指Maven在其中生成的pom.properties文件:

META-INF/maven/${groupId}/${artifactId}

作为依赖项包含在另一个项目中(在 Jar 中)。当我在 Eclipse 之外使用 Maven 构建/打包主项目时,依赖 Jar 会按预期构建(包含 pom.properties 文件),一切都很好。

但是,当我在 Eclipse 中构建/运行相同的(父)项目时,它不存在。我错过了什么?

使用 Eclipse,有一个依赖项的 Jar 库(在 lib 文件夹中),其中包含除 Maven 生成的文件之外的所有内容。所以就我而言:

META-INF/
META-INF/persistence.xml
META-INF/MANIFEST.MF
~~~ snip ~~~

依赖项目存在于同一个工作区,我启用了“工作区解析”。

查看 Eclipse 中的构建目标文件夹(\target\classes),我可以看到 Eclipse 用于 Jar 的所有文件,因此我只能假设 Eclipse 将其视为“常规”Java 项目(尽管父项目在 POM 中将其列为 Maven 依赖项)——因此 Maven 不会参与打包。

如何让 Eclipse 将项目依赖项视为 Maven 项目 / 以便生成的 pom.properties 将包含在父项目使用的 Jar 中?


更新

对于父(War)项目,每当我使用 Eclipse 构建项目(使用“构建项目”或“自动构建”而不是“Maven 构建”)时,都会生成以下结构:

target\m2e-wtp\web-resources\META-INF\maven\${groupId}\${artifactId}\pom.properties

这是在 Eclipse 部署程序集中引用的:

<wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>

这样当 War 部署到 Tomcat 时,META-INF\maven... 结构就存在于存档的根目录中。

依赖项/Jar 项目在 Eclipse 中显然具有相同的“部署程序集”工具,所以我只需要弄清楚是什么在构建时创建了 m2e-wtp 文件夹并将其应用到该项目。

【问题讨论】:

  • 请问您如何访问 jar 中的 pom.properties ?提前知道groupId和artifactId了吗?

标签: java eclipse maven eclipse-luna


【解决方案1】:

实际上,我认为您不能使用默认的 Eclipse Jar-Export。

如果您想在 Eclipse 中执行此操作,您可以做的最好的事情是使用Maven Build 运行配置,这与在 Eclipse 之外使用 Maven 没有太大区别。但至少你在 Eclipse 中有一个按钮可以单击生成 jar,如果这是主要原因的话。但是生成 jar 的正常 Eclipse 功能(文件 > 导出...)会忽略所有 Maven 设置。

Workspace Resolution 仅适用于编译和运行代码,不适用于其他 Maven 功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    相关资源
    最近更新 更多