Java 查找subversion项目结构中配置和数据库架构文件的正确处理方法
在SVN中,我们有一个使用hibernate等的所有数据库逻辑的项目。但是,该项目取决于数据库模式处于与代码匹配的特定状态 此外,我们还将在配置目录中运行服务器的配置脚本 如何在SVN中正确设置项目结构以克服此问题 结构可以是这样的:Java 查找subversion项目结构中配置和数据库架构文件的正确处理方法,java,database,svn,maven,database-migration,Java,Database,Svn,Maven,Database Migration,在SVN中,我们有一个使用hibernate等的所有数据库逻辑的项目。但是,该项目取决于数据库模式处于与代码匹配的特定状态 此外,我们还将在配置目录中运行服务器的配置脚本 如何在SVN中正确设置项目结构以克服此问题 结构可以是这样的: --DBHibernateProject ------trunk ------branches ------tags --DatabaseScriptsProject ------trunk ------branches ------tags --ConfigPr
--DBHibernateProject
------trunk
------branches
------tags
--DatabaseScriptsProject
------trunk
------branches
------tags
--ConfigProject
------trunk
------branches
------tags
----DatabaseProject
-------trunk
--------DBHibernateProject
--------DatabaseScriptsProject
-------branches
-------tags
----OtherProject
-------trunk
-------branches
-------tags
----ConfigProject
-------trunk
-------branches
-------tags
但是我们如何将数据库脚本项目与DBHibernateProject的1.0版联系起来呢?hibernate项目在maven repo中有一个可部署资产(jar),但db脚本没有。我想确保正确的db脚本与应用程序的正确版本相关联。您可以通过流程或制作一个SVN项目来完成 您可以为团队制定一条规则,即当您完成一组数据库内容时,您可以使用一个标记对其进行标记,该标记与它使用的代码的标记相同。这可能很乏味,但如果数据库和代码之间的更改通常是同步的,那么这是可行的
另一种方法是在SVN中创建一个项目,其中包含一个主干、一组标记和分支。然后在repo的顶层有一些文件夹来保存代码、脚本和hibernate内容,从而完成同样的任务。可以管理您的SVN repo上的权限,以便不同的人对特定文件夹具有写入权限,但这会造成每次分支时不断修改权限的成本(如果您愚蠢地允许修改标记,则可能会添加标记)我强烈建议使用来管理您的数据库迁移。更改文件是从类路径读取的,这意味着它们可以与匹配的Hibernate类文件一起部署在同一个jar中 我从未使用过它,但liquibase确实有一些支持,这可能会证明是有用的 有关Maven示例,请参见:
如果我的重建是正确的,我将以Subversion风格(没有Maven,这可能是我的错误)在DBHibernateProject树中创建两个目录类型external,它引用“处于某种状态的某棵树”分别在DatabaseScriptsProject和ConfigProject树中数据库项目的单个项目布局不能如下所示:
--DBHibernateProject
------trunk
------branches
------tags
--DatabaseScriptsProject
------trunk
------branches
------tags
--ConfigProject
------trunk
------branches
------tags
----DatabaseProject
-------trunk
--------DBHibernateProject
--------DatabaseScriptsProject
-------branches
-------tags
----OtherProject
-------trunk
-------branches
-------tags
----ConfigProject
-------trunk
-------branches
-------tags
如果配置项目没有绑定到其他项目,而只是服务器的脚本,那么我猜您可以将其作为与其他项目相同的布局
正如您已经在标记中提到的maven,为什么不使用依赖项的版本呢?当脚本项目实际上没有资产(war、jar等)时,如何使用它的依赖项呢。这仅仅是一个pom依赖关系吗?我考虑过SVN中的单个项目,但大多数人使用的项目似乎少于多个项目。我们希望使用多个项目,因为我们将有不相关的项目。另外,一些使用数据库的项目可能有自己的版本。IE-ProjectA1.0使用DBProject1.0,而ProjectB2.0使用DBProject1.0。