Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 常春藤最佳实践:将代码拆分为多个项目,还是使用一个项目进行多个配置?_Java_Project Management_Ivy - Fatal编程技术网

Java 常春藤最佳实践:将代码拆分为多个项目,还是使用一个项目进行多个配置?

Java 常春藤最佳实践:将代码拆分为多个项目,还是使用一个项目进行多个配置?,java,project-management,ivy,Java,Project Management,Ivy,在工作中,我们有许多项目需要共享一些通用代码。有些代码是完全通用的,而有些代码只由我们项目的一个子集共享。我应该将公共代码分成两个独立的项目,还是为单个项目使用两种不同的常春藤配置 选项1两个独立的项目 项目1-通用发布为默认配置 项目1-作为默认配置发布的通用xml 潜在问题:要求我有两个独立的项目,两个独立的构建文件和两个独立的常春藤文件 选项2-一个项目,针对不同工件的多个常春藤配置 工件1-通用发布为核心 工件2-作为核心xml发布的通用xml 潜在问题:我可能必须在同一个项目

在工作中,我们有许多项目需要共享一些通用代码。有些代码是完全通用的,而有些代码只由我们项目的一个子集共享。我应该将公共代码分成两个独立的项目,还是为单个项目使用两种不同的常春藤配置


选项1两个独立的项目

  • 项目1-通用发布为默认配置
  • 项目1-作为默认配置发布的通用xml
潜在问题:要求我有两个独立的项目,两个独立的构建文件和两个独立的常春藤文件

选项2-一个项目,针对不同工件的多个常春藤配置

  • 工件1-通用发布为核心
  • 工件2-作为核心xml发布的通用xml
潜在问题:我可能必须在同一个项目中维护单独的源目录

在这两种情况下,公共xml组件都可能依赖于公共核心组件



那么,SF,我应该如何维护我的公共代码呢?对于这两种方法,我遗漏了哪些问题,还有哪些其他的优点/缺点或替代解决方案?

嗯,这实际上取决于您喜欢如何管理源代码。但首先,我要问的问题是,你是否真的需要分割源代码。commons项目的思想是封装代码、类、接口等,这些代码、类、接口等可以被其他项目用作通用工具包。这并不意味着这些项目必须使用Commons中的所有内容。他们可能只使用其中的一小部分。这很好,而且可能是分割你的共享空间实际上是过度优化


想想看,如果您的下一个项目使用Commons库的不同子集,会发生什么?您打算再次拆分吗?

项目并不是在使用公共代码的子集,而是在公共代码中有明显不同的组件。但你是对的——这可能是过度优化了。如果我最终将所有代码存储在一起,那么我可能只需要使用这些后处理工具中的一个来删除(给定产品的)最终JAR中的死代码。到目前为止,我喜欢这个答案,但我仍然对获得更多输入感兴趣。我将暂时不回答这个问题。