使用Maven和SVN管理本地文件

| 我正在寻找将本地文件注入到项目中的最佳实践,这些项目不会被源代码控制跟踪,从而使文件的源代码控制版本看不到更改。 特别是,我有一个包含数据库凭据的上下文文件。我想将原始的“将您的凭据放在这里”文件保留在源代码管理中,但我需要使用没有这些凭据的开发设置(或生产服务器或您拥有的东西)为该文件填充适当的凭据被推回源代码管理。显然,我只能在本地编辑文件,而不能将其检入。但是,随着时间的流逝,这变得很繁琐,请注意,不要在每次需要时不小心将带有凭据的文件检入中央代码存储库检查更改。另一种方法是检入一个“ -dist \”类型的文件,每个用户都必须重命名和编辑该文件才能完全构建项目。 我尝试研究Maven Overlays,因为这看起来需要我使用pom.xml和war文件为我的本地凭据构建一个完整的项目。仅几个文件就好像有很多开销。我真正想要的是一种告诉maven \“如果文件X(根本不在源代码管理中)在本地存在的方法,请使用它。如果不存在,请使用文件Y(实际上在源代码控制中存在的文件)。 ”。\“似乎应该有一种相当自动的方式来处理它。     
已邀请:

bab

        Maven替换插件是否是您需要的解决方案?     
        简单 我过去做过,很简单,例如将单个文件for0ѭ签入版本控制,并在
svn.ignore
文件中有另一个名为
local.default.config
的文件。让Maven复制ѭ1到ѭ0上(如果存在),或者让两者都复制,您的应用程序将查找
local.default.config
,然后寻找look0ѭ(如果第一个不存在)。 您甚至可以使用相同的“ 0”名称,并使应用程序在多个位置显示,其中“ 8”是最高优先级,然后是其他位置。 理想的版本将优先读取所有文件,并使用所有文件中最后找到的属性,然后所有属性的值都为
default.config
,只有少数需要更改为本地配置的
local.default.config
。 更成熟的Maven导向 Maven有多种方法可以到达您想去的地方: 使用Maven
profiles
启用和禁用保存要使用的文件名的
property
,并使用maven-resources-plugin复制在
profile
中指定的文件。 将Maven中的
filter
功能与
profile
驱动的
properties
一起使用。 使用maven-replacer-plugin直接基于
profile
驱动的
properties
操作文件 使用maven-dependency-plugin并将文件存储在本地Maven存储库中,并在“ 19”阶段将其从文件中拉出。
profiles
非常强大,非常适合针对不同环境配置Maven。我在每个
pom.xml
中都有
local
dev
qa
release
的个人资料。我默认将
local
配置文件设置为活动状态,并根据需要使用ѭ27as选择其他配置文件,这将自动禁用
local
并使用
dev
配置文件中指定的
properties
。 面向更复杂的SVN 您可以关闭本地
development
功能分支,而只在该分支上拥有本地配置,并且在合并代码时,更改回到
trunk
时,将从合并中排除对配置文件的更改。实际上,这就是我要这样做的方式,因为我们使用Git。在SVN中分支不是那么痛苦,因此这不是一种选择 我确信还有其他的Maven解决方案。无论哪种解决方法,svn.ignore都是您的朋友。 Maven
profile
的用法可能非常强大。     
        我们使用jasypt加密Spring读取的属性文件中的密码。该工具也可以在没有Spring的情况下使用。这使将属性文件保留在源代码管理中非常简单。 如果您的问题是用户凭据,那么我建议您将测试帐户用于运行的所有自动测试。     
        我认为过滤可能适合您的需求。您可以有一个未签入的local.filter和一个prod.filter。您可以默认使用prod.filter并根据开发人员需要使用的命令行标志或本地配置文件来替代local.filter,而部署人员则不需要。     

要回复问题请先登录注册