web项目都需要一些特定于环境的

每个web项目都需要一些特定于环境的配置。数据库凭据、根url、SMTP设置等等。这是一个关于堆栈溢出的反复出现的问题,我在这个主题上看到了很多不同的问题,这里我将描述一个我认为最好的问题。

  • 将所有这些属性放在.properties文件中(例如application.properties)
  • 拥有这个应用程序。属性位于Web应用程序之外。它不是与构建捆绑在一起的。
  • 提供指示文件所在位置的命令行选项。例如-Dconfig.location=/home/you/config
  • 在应用程序启动时(通常在ServletContextListener中),加载文件并将其放到映射中。可以是java.util.Properties或HashMap
  • 春季用户-使用<context:property-placeholder-configurer location="file://${config.location}/application.properties" 。其他框架可能会有一些机制来加载这些全局属性。
  • 在SCM存储库中保存一个骨架属性文件。它应该包含所有的属性,但是它们的值是无关的--它们在每个环境上都会发生变化。
  • OPS团队可能会受益于版本化不同的环境配置(生产、Qa、Stage),因此可以创建一个单独的/config文件夹/子项目,并且可以将所有特定于环境的属性存储在那里。在添加属性时,开发人员应该相应地更新所有文件。
  • 不依赖于环境但对于项目仍然是全局的属性可以存储在项目中(maven的src/main/resources),并提交给SCM。它们可以在启动时与外部属性合并(即在内存中合并)。
  • 大多数可外化的属性可以有合理的缺省值--公司的smtp服务器、数据库驱动程序等。它们可以放在application-defeault.properties在项目中,外部文件可以覆盖它们。这只是一种选择--如果要在存储库中提交一个具有这些合理默认值的文件,并且每个环境都使用该文件作为基础,那么它实际上是相同的

开发人员可以轻松地以这种方式运行他们的项目。操作系统可以很容易地在不同的环境上部署构建。建造仍然与环境无关。

https://www.imdb.com/list/ls502132679/

每个IDE都生成特定的项目/配置/构建文件。Eclipse生成.project和.classpath以及.set目录。IntelliJIDEA有它的.iml文件。在源代码管理方面(svn、cvs、git等),如何处理这些文件一直是一个问题。

普遍接受的做法是将它们添加到SCM忽略列表中(例如,SVN:NOILE)。为什么?

  • 项目没有意识到它是在哪个IDE中开发的。每个团队成员都可以使用他们自己选择的IDE
  • 不存在将绝对路径配置偷偷导入存储库的危险。
  • 任何开发人员都不能覆盖其他开发人员的本地设置。

https://www.douban.com/note/814238292/

这种做法是有道理的,但它有一个主要的缺点-建立一个项目的复杂性必须重复每次。换句话说,您不能在签出之后立即开始开发--您必须配置大量的东西--在本地服务器上部署、校验样式配置、插件配置最好使用构建工具而不是IDE构建过程(ant、maven)。但除此之外,您还应该有一个单步开发环境设置(除了安装数据库/搜索引擎/等等)。

那怎么做呢?我知道这是一个不受欢迎的建议,但是:将IDE项目文件提交到存储库中。一旦一个成员成功地进行了本地设置,就应该提交文件,以便其他所有人都可以签出/更新,并让项目运行。我相信每个人都经历过帮助为新团队成员建立项目的麻烦,或者在本地机器上得到新的检查(由于SCM错误、OS重新安装等等)。

https://www.jianshu.com/p/6f62febb982e

当然,你不能什么都提交-看看上面的清单,看看为什么这可能是错误的。有一件事要记住:永远不要走绝对的道路。每件事都必须是项目相关的。如果出于某种原因(例如,使用FileSync而不是WTP部署,在Eclipse中),您需要一个外部路径-将它放置在一个变量wiingeclipse中并使用它。

至于上面列表中的另外两个项目--提交项目文件并不与特定IDE相关联。它使它可以立即用于该IDE。在同一个项目中拥有.project和.iml文件没有问题。只是他们不会被每个人所利用。但无论如何,这个项目的任何一部分都不为每个人所用。关于当地的偏好--不要去做那些。确定项目运行所需的IDE文件,忽略其余文件。例如,Eclipsewtp项目将需要提交的分面项目设置-即“.set/…”.facet.core.xml“。具有一致的格式规则需要一个.prefs文件。但是BPM可视化插件的视图设置是开发人员首选的问题--忽略它们。

最后,在项目根目录中有一个.txt文件,用几行描述如何创建工作环境。前面提到的IDE变量(如果需要的话),所需的IDE插件,安装所需的软件(例如数据库)等等。但是它应该是最小的-毕竟我们正在尝试一个(几乎)一步开发环境的设置。

更新:许多人建议Maven解决所有这些问题。例如,Eclipse-maven集成几乎已经足够好了,但是还不够好。你还得执行一些手工任务。M2eclipse不允许部署。M2eclipse-WTP确实如此,但遗憾的是,它并不总是起作用。启用项目方面不是Maven所做的事情。还有更多。Maven是一个巨大的改进,但在许多情况下还不够。

posted @ 2021-10-10 17:34  javd9w  阅读(106)  评论(0)    收藏  举报