Java Maven中有很多继承的单插件配置文件是个好主意吗?
在我们的基础设施中,我们有许多由Maven2构建的小型Java项目。每个项目都有自己的pom.xml,它最终继承自我们公司的“主”父pom 我们最近开始在我们的父pom中添加一些小的配置文件,默认情况下是禁用的,一旦启用,就会以传统的方式执行单个插件 示例:Java Maven中有很多继承的单插件配置文件是个好主意吗?,java,maven-2,Java,Maven 2,在我们的基础设施中,我们有许多由Maven2构建的小型Java项目。每个项目都有自己的pom.xml,它最终继承自我们公司的“主”父pom 我们最近开始在我们的父pom中添加一些小的配置文件,默认情况下是禁用的,一旦启用,就会以传统的方式执行单个插件 示例: “sources”概要文件执行maven源插件来创建项目源的jar “clover”配置文件执行maven-clover2-plugin以生成clover报告。它还嵌入了我们的Clover许可文件,因此不需要在子项目中重新指定 “fitn
- “sources”概要文件执行maven源插件来创建项目源的jar
- “clover”配置文件执行maven-clover2-plugin以生成clover报告。它还嵌入了我们的Clover许可文件,因此不需要在子项目中重新指定
- “fitnesse”配置文件执行fitnesse maven插件以运行与项目相关联的fitnesse测试。它包含fitnesse服务器主机和端口以及其他不需要重复的信息
mvn test -P clover
mvn deploy site-deploy -P fitnesse,sources
等等
到目前为止,这似乎为可选功能的组合提供了方便
然而,继续使用这种方法是否存在任何危险或陷阱(明显或其他)?这种类型的功能是否可以用另一种方式更好地实现或表达?此解决方案的问题在于,您可能正在创建一个“选择”模型,这有点不专业。在你描述的个人资料中,你是介于两者之间;如果每个配置文件本身都能产生不错的结果,那么您就可以了。当你开始需要特定的配置文件组合时,我认为你正在走向麻烦 单个开发人员通常会遇到一致性问题,因为他们忘记了给定场景应该使用哪一组概要文件。您的里程数可能会有所不同,但我们在这方面遇到了实际问题。您的一半开发人员在很短的时间内就会忘记“正确”的组合,并经常浪费时间,因为他们在错误的时间运行错误的组合
您将遇到的实际问题是,AFAIK无法拥有一组激活一组子概要文件的“元”概要文件。如果有一个很好的方法来创建一个雨伞配置文件,这将是一个非常整洁的功能。您的“fitnesse”和“sources”配置文件应该是私有的,由一个或多个元配置文件激活。(您可以在settings.xml中为每个开发人员激活一个默认设置)您似乎对这种方法有点怀疑,但不确定原因——毕竟,这是非常方便的。无论如何,这就是我的感受:我真的不知道为什么,但这似乎有点奇怪 让我们来考虑这两个问题: a) 配置文件的用途是什么? b) 我们应该将您的方法与哪些备选方法进行比较 关于a),我认为概要文件适用于不同的构建或执行环境。您可能依赖于本地安装的软件,在本地安装的软件中,您将使用配置文件来定义各个环境中可执行文件的路径。或者您可能有不同运行时配置的概要文件,例如“开发”、“测试”、“生产”。 有关这方面的更多信息,请参见和 至于b),我想到的想法是:
如果你能明确地称之为目标,我认为这将是非常明确和灵活的。记住插件/目标名称应该不会比记住配置文件名称更难。在Maven中拥有多个配置文件并没有问题,事实上,我认为它们是允许构建启用和禁用功能类的一种很好的方法。我建议根据它们的功能而不是插件来命名它们,并考虑在同一配置文件中将功能相关的插件分组。 作为您遵循的一个先例,定义了一个“发布概要文件”,其中包括源、javadoc和部署插件的配置
你应该考虑遵循这种方法,这样你的“FiNeNeSe”配置文件将成为“集成测试”,并且如果稍后需要,你可以选择在该配置文件中定义额外的插件。类似地,“clover”配置文件可以重命名为“site”,您可以在该配置文件中定义其他报告,例如JDepend、JXR、PMD插件的配置。
我认为这是像Maven一样的re:declarative(“-p fitnesse”而不是fitnesee:remotecall等)。在CI服务器上也只指定一次生成命令。最后,目的是不需要这些配置文件