以Eclipse友好的方式跨多个项目共享筛选的资源

以Eclipse友好的方式跨多个项目共享筛选的资源,eclipse,maven,jar,m2eclipse,m2e,Eclipse,Maven,Jar,M2eclipse,M2e,短版: 寻找建议,以某种方式将包含公共版权信息、项目名称、版本、inceptionYear和currentYear的过滤资源文件分发到多个项目,使用Eclipse中的m2e插件时不会出现错误 说明: 现在,我们有一个项目buildInfo,它包含一个属性文件,其中包含${project.name}、${project.version}、${inceptionYear}、${currentYear}等内容 我们有一个parent.pom,它执行以下操作: 使用buildhelpermaven插件

短版:

寻找建议,以某种方式将包含公共版权信息、项目名称、版本、inceptionYear和currentYear的过滤资源文件分发到多个项目,使用Eclipse中的m2e插件时不会出现错误

说明:

现在,我们有一个项目buildInfo,它包含一个属性文件,其中包含${project.name}、${project.version}、${inceptionYear}、${currentYear}等内容

我们有一个parent.pom,它执行以下操作:

  • 使用buildhelpermaven插件定义currentYear属性:timestamp属性目标
  • 使用dependency:unpack-goal将buildInfo属性文件解压缩到${project.build.directory}/buildInfo/${project.artifactId}
  • 使用资源:复制资源目标将属性文件复制并筛选到目标/类
从parent.pom继承的所有项目现在都会获得属性文件的副本,该文件将使用该项目的特定名称、版本和起始年份进行筛选

然后在每个项目中使用它,在项目初始化时将版权通知转储到日志中。具体来说,该项目知道其属性文件位于以该项目命名的子文件夹中

原因:

为了在每个需要转储版权和版本信息的项目中删除重复的属性文件,我们将属性文件放在了它自己的项目中

我们找不到任何其他方法来查找正确的属性文件,只能将其放在每个项目的唯一命名文件夹中

我们使用许多这样的项目(重新)构建应用程序,这意味着我们需要在许多不同的jar文件中找到这些信息,因此属性文件的名称/路径必须是唯一的

问题:

eclipsem2e插件不喜欢dependency:unpack和buildhelpermaven-plugin:timestamp属性目标

当使用m2e插件将项目签出为maven项目时,它会将继承自parent.pom的pom文件标记为存在错误

  • 我们将这两个目标的执行移到了包阶段,这应该是m2e非有趣的阶段,但仍然会出现错误(请参阅:)
  • 我们添加了配置为忽略时间戳属性目标的lifecycle mapping插件,但令人恼火的是,它仍然在签出时给出错误,然后在签出后消失
  • 我们还添加了忽略解包目标的配置
这三个变化似乎都奏效了。不幸的是,当从Eclipse运行项目时,我们不再有属性文件

问题:

所有这些都是为了消除重复,避免每次发布都需要提交文件更改

令人烦恼的是,我们的解决方案仍然要求我们知道应用程序由哪些项目组成,以便从每个jar读取信息并显示在About框中

问题:

您建议如何向应用程序中使用的多个项目添加公共信息,并能够查找每个jar文件

还有,maven可以用m2e友好的方式完成吗

期待您的建议,

/Henrik

我将maven远程资源插件用于类似目的,如中所述。我仍然需要在POM中添加m2e生命周期映射的内容,我使用了
操作。在
mvn
命令行和Eclipse中工作得非常好


我遇到的唯一问题是,如果我对资源文件进行编辑,Eclipse有时似乎会对其持有某种类型的锁定;然后,下面的
mvn clean
报告“无法删除文件,因为它正在使用中。”在Eclipse中的资源项目上运行“更新项目配置”可以更正此问题。我接受这个痛点,因为至少我可以避免重复,而且我不想经常编辑共享资源。(我也希望最新的Eclipse(我还没有升级到Eclipse)会有所帮助!)

我使用maven远程资源插件也有类似的用途,如中所述。我仍然需要在POM中添加m2e生命周期映射的内容,我使用了
操作。在
mvn
命令行和Eclipse中工作得非常好

我遇到的唯一问题是,如果我对资源文件进行编辑,Eclipse有时似乎会对其持有某种类型的锁定;然后,下面的
mvn clean
报告“无法删除文件,因为它正在使用中。”在Eclipse中的资源项目上运行“更新项目配置”可以更正此问题。我接受这个痛点,因为至少我可以避免重复,而且我不想经常编辑共享资源。(我也希望我还没有升级到的最新月食会有所帮助!)