Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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_Eclipse_Maven - Fatal编程技术网

Java 如何构造不同项目共享的不同通用代码?

Java 如何构造不同项目共享的不同通用代码?,java,eclipse,maven,Java,Eclipse,Maven,我有一个Web服务器项目,它使用soap Web服务并将数据保存到数据库 现在我想编写一些导入器类,这些导入器类可以定期构建某种数据库缓存。这些导入器类应该重用Web服务器项目的很多部分(特别是域leyer、域pojo、数据库服务、配置等)。进口商随后应在不同于Web服务器的机器上运行,从而独立运行 一个maven/eclipse项目必须如何构造,以便我可以分离这两个项目,但可以重用大量公共代码 我会把这两个类放在同一个项目中吗?或者我会将公共代码移动到一个jar中,并使用这个jar作为依赖项创

我有一个Web服务器项目,它使用soap Web服务并将数据保存到数据库

现在我想编写一些导入器类,这些导入器类可以定期构建某种数据库缓存。这些导入器类应该重用Web服务器项目的很多部分(特别是域leyer、域pojo、数据库服务、配置等)。进口商随后应在不同于Web服务器的机器上运行,从而独立运行

一个maven/eclipse项目必须如何构造,以便我可以分离这两个项目,但可以重用大量公共代码


我会把这两个类放在同一个项目中吗?或者我会将公共代码移动到一个jar中,并使用这个jar作为依赖项创建一个Web服务器和一个导入器项目?

您的上一段给出了一个合理的解决方案

如果导入器和web应用程序是密切相关的,并且这些“公共类”的“可重用性”仅限于此项目中,那么您可以做的是创建一个如下所示的多模块项目:

foo // your project name
  + foo-main    // your reusable classes, you may split it into several modules if appropriate
  + foo-web       // have foo-main as dependency
  + foo-importer  // have foo-main as dependency
  + foo-parent    // my personal preference is to make parent project a module, not mandatory
如果您的导入器与您的foo项目无关,但您仍然希望重用,那么您可以将其拆分

foo // your project name
  + foo-main    // your reusable classes, you may split it into several modules if appropriate
  + foo-web       // have foo-main as dependency
  + foo-parent    // my personal preference is to make parent project a module, not mandatory

bar-importer  // another project, having foo-main as dependency
或者甚至将公共代码作为一个单独的项目

app-common   // the common code in original foo-main, 
             // maybe a multi-module project


foo // your project name
  + foo-main    // foo-specific codes, have app-common as dependency
  + foo-web       // have foo-main as dependency

bar-importer   // having app-common as dependency

对于Eclipse,应该没有什么可担心的。假设您使用的是最新的Eclipse+M2E插件(应该已经与最新的Eclipse捆绑在一起),如果您有正确的POM,那么当您将项目导入Eclipse时(通过导入->现有的Maven项目),应该已经创建了项目之间的关系。

感谢您的详细回答。关于第一种方法,还有一个问题:导入器在某种程度上是相关的,因为它必须将缓存数据导入数据库,然后由main/web应用程序使用。这就是为什么我希望至少重用域类。无论如何,主应用程序不会引用导入器java类。有这样的想法:你会选择第一种方法,即所有内容都在一个多模块项目中吗?还是将进口商完全排除在外?要考虑的主要问题是多模块项目将模块的“开发生命周期”限定在一起。如果你想独立发布项目,那么我会说第二种方法更好。Pavel Horal所说的也是我最关心的。(这就是为什么我的“进口商和web应用程序密切相关”的意思)