简短版:
寻找建议以某种方式将包含常见版权信息,项目名称,版本,inceptionYear和currentYear的已过滤资源文件分发到多个项目,使用从Eclipse使用m2e插件时不会出错的内容。
说明
现在,我们有一个项目buildInfo,其中包含一个属性文件,其中包含$ {project .name},$ {project.version},$ {inceptionYear},$ {currentYear}等内容。
我们有一个parent.pom执行以下操作:
从parent.pom继承的所有项目现在都获得了property-file的副本,该副本使用该项目的特定名称,版本和初始年份进行过滤。
然后在每个项目中使用它在项目初始化时将版权声明转储到日志中。具体来说,该项目知道其属性文件位于以项目命名的子文件夹中。
为什么:
要删除需要转储版权和版本信息的每个项目中的属性文件的重复,我们已将属性文件放在其自己的项目中。
我们找不到任何其他方法来查找正确的属性文件,而不是将其放在每个项目的唯一命名文件夹中。
我们使用大量这些项目构建应用程序(重新),这意味着我们需要在许多不同的jar文件中找到这些信息,因此属性文件的名称/路径必须是唯一的。
问题:
Eclipse m2e-plugin不喜欢依赖:unpack和build-helper-maven-plugin:timestamp-property目标。
当使用m2e-plugin将项目签出为maven项目时,它会将从parent.pom继承的pom文件标记为有错误。
通过所有三项更改,它似乎有效。不幸的是,当从Eclipse运行项目时,我们不再拥有属性文件......
问题:
所有这一切都是为了消除重复并避免为每个版本提交文件更改,
令人讨厌的是,我们的解决方案仍然要求我们知道应用程序包含哪些项目,以便从每个jar中读取信息并显示在“关于”框中。
问题:
您如何建议将常用信息添加到应用程序中使用的多个项目中,并能够查找每个jar文件?
并且,可以用m2e友好的方式完成maven吗?
期待建议,
/亨里克
答案 0 :(得分:1)
我已将myven远程资源插件用于类似目的,如another SO answer中所述。我仍然需要在我的POM中添加m2e生命周期映射内容,我使用了<execute>
操作。在mvn
命令行和Eclipse中运行良好。
我遇到的唯一问题是,如果我编辑它,Eclipse有时会对资源文件进行某种锁定;然后,以下mvn clean
报告“无法删除文件,因为它正在使用中”。在Eclipse中的资源项目上运行“更新项目配置”可以解决该问题。我接受这个痛点,因为至少我可以避免重复,而且我不倾向于经常编辑共享资源。 (我也希望最新的Eclipse,我还没有升级,会有所帮助!)