Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven配置文件还是弹簧配置文件?_Java_Spring_Maven_Deployment - Fatal编程技术网

Java maven配置文件还是弹簧配置文件?

Java maven配置文件还是弹簧配置文件?,java,spring,maven,deployment,Java,Spring,Maven,Deployment,许多java应用程序都是用maven构建的。maven有概要文件的概念,为不同的环境构建发布包非常方便。e、 g.dev/test/prod使用不同的path/jndiname/security rule/properties文件。。。我想我不必在这里列出代码来解释它 Spring是一个非常好而且流行的java开发框架,因为spring3也支持概要文件的概念 现在问题来了,对于释放到不同的环境目的,哪一个更好?现在我更喜欢maven的个人资料。因为spring必须复制每个概要文件中的每个bean

许多java应用程序都是用maven构建的。maven有概要文件的概念,为不同的环境构建发布包非常方便。e、 g.
dev/test/prod
使用不同的
path/jndiname/security rule/properties文件
。。。我想我不必在这里列出代码来解释它

Spring是一个非常好而且流行的java开发框架,因为spring3也支持概要文件的概念

现在问题来了,对于释放到不同的环境目的,哪一个更好?现在我更喜欢maven的个人资料。因为spring必须复制每个概要文件中的每个bean定义。它需要一个初始值设定项/属性来让spring知道应该激活哪个概要文件

但我觉得spring配置文件比maven配置文件更灵活


你觉得怎么样?请给我一些建议。谢谢。

如果您需要不同的工件,请使用maven。如果它只是一个真正的配置,可以在构建人工制品后进行配置,那么用户Spring配置文件。

我认为这取决于您的需求。如果根据环境(如jdbc驱动程序等)有不同的依赖项,则需要使用maven来解决这个问题


如果只是配置部署的问题,您可能最好使用spring。

Maven概要文件将提供构建时解决方案,而SpringFramework概要文件将提供运行时替代方案。我认为这是人们可能会问自己的第一个问题:他是否想要一个可以部署在不同环境中的包,或者他是否想要构建工具根据目标环境提供不同的包


需要记住的一件事是,如果将不同的包部署到不同的服务器中,可能会出现许多问题。例如,在我的工作场所,如果我正在部署一个程序包来纠正以前在生产环境中出现的错误,公司的政策会规定,唯一可以接受的情况是,我在QA和生产服务器中拥有相同的解决方案包。

如其他回复中所述:这一切取决于您的工作方式:)

在过去几年中,我们使用maven和现在的spring 3.1概要文件得出的结论如下:

  • 我们使用maven发布插件来减少发布。如果我们使用maven概要文件,这会导致环境问题,因为我们需要重建版本或至少每个maven概要文件的标签
  • 因此,我们为所有环境创建on.war文件,并使用spring
    PropertyPlaceHolderConfigure
    来设置应用程序(或一些JNDI资源,具体取决于客户)。这只允许运行一个maven版本
  • 当环境也不同时,spring配置文件就会出现。例如,并非所有环境都提供身份验证服务。在这里,我们将该服务存根并将其放入spring概要文件中。我们在属性中激活弹簧配置文件,该属性由我们无论如何使用的
    PropertyPlaceHolderConfigure
    读取
关于如何做到这一点,有一些不错的教程:

我们通常只使用maven概要文件将构建划分为不同的部分,供开发人员和持续集成构建使用。对于.war文件,我们实际上不再在目标环境中使用它们。 我们仍然使用maven配置文件进行自动化数据库部署,这与web应用程序(数据量、测试数据等)相比差异更大,但这些配置文件并不是以zip的形式提供的

当然还有其他的路要走。我不认为这是故事的结尾:)


但这可能会有所帮助。

我碰巧使用了properties maven plugin来设置系统属性,具体取决于激活的maven配置文件。然后在Spring中,我以编程方式激活了我想要的概要文件,具体取决于该系统属性:

字符串activeProfile=System.getProperty(“myapp.profile”)

appContext.getEnvironment().setActiveProfiles(..)

此外,当我想直接链接两种配置文件(maven/spring)时,我通过maven插件设置spring.profiles.active属性

这些实践在设计中可能是错误的,但它们解决了我的问题