当前位置: 首页 > 知识库问答 >
问题:

将类重构为单独的项目

司徒博容
2023-03-14

我打算从一个Java项目中提取几个类和包,并将它们放入另一个项目中(该项目将有一个可分发的jar)。这并不太难,但当然,进行如此大规模的重构会带来一些后果。也就是说,在原始项目中有许多类是我想要提取的类的子类。实现这种重构的最佳方法是什么?

共有2个答案

洪高阳
2023-03-14

基本上我就是这么做的:

>

  • 创建一个新项目

    将旧项目中的适当类复制到新项目中的新包中,重新配置,直到所有内容都已生成

    单独测试那个项目,并将其构建到一个罐子中

    添加jar作为依赖项

    从原始项目中删除类

    手动将旧包的所有导入更改为新包

    我真正想要的是某种自动化或简化步骤6的方法,以确保我没有破坏任何东西,但我不确定它是否存在于大规模查找/替换之外。

  • 萧鸿轩
    2023-03-14

    您可以创建单独的项目,主项目将对所有这些项目具有依赖关系。因此,在您的集成开发环境中,您可以轻松地浏览源代码。

    在构建应用程序时,每个依赖项都可以构建到一个jar中,主应用程序将与其类路径中的所有依赖项jar捆绑在一起。

    让我们以一个使用插件的web应用为例,以及使用公共类、实用程序等的插件,这些插件存储在一个名为common plugins的项目中。

    project/webapp: having dependency on plugin1, plugin2 and common-plugin
    project/plugin1: having dependency on common-plugins
    project/plugin2: having dependency on common-plugins
    project/common-plugins: having no dependencies
    

    在构建项目时,您可以将插件和通用插件构建到jars中,并与Web应用捆绑在一起

    project/webapp.war/WEB-INF/lib/plugin1.jar
    project/webapp.war/WEB-INF/lib/plugin2.jar
    project/webapp.war/WEB-INF/lib/common-plugins.jar
    

    这样,在IDE中,我将以eclipse为例,您将拥有一个工作区,其中包含4个具有上述依赖关系的项目。在使用maven、ant、ivy或你想要的东西构建时,你将构建webapp项目所依赖的3个项目,然后打包所有内容。

     类似资料:
    • 问题内容: 我继承了包含静态嵌套类的代码,如下所示: 通过阅读SO(例如Java内部类和静态嵌套类),我相信这等效于两个单独文件中的两个单独类: 和 如果这是正确的,那么维护静态嵌套类结构是否有任何优势,还是应该重构? 问题答案: Jorn陈述是正确的,通常按照以下经验法则来体现: 嵌套类应设为私有,这意味着保留托管类的辅助逻辑,仅此而已。如果您不能将它们设为私有,则可能不应嵌套。 例外是,当您定

    • 这段代码(都在一个类中)的工作原理是: 下面的代码(重构为两个单独的类)不是: **我注意到空指针异常中标识的两行[每个类中一行]

    • 我正在开发一个需要调用一些Jenkins实例的应用程序,为此我使用jenkins-cli. jar 我可以使用命令行调用jar以轻松提取其输出。然而,我需要自己解析异常。 为了正确处理异常,我现在通过反射调用jar的main方法: 但现在,我需要以某种方式将jar打印的输出获取到系统中。我知道我可以使用这个系统。放样()。问题是,我有其他线程同时记录。我在这里读到了这个系统。out是特定于类加载器

    • 问题内容: 因此,我知道有以下“生成器”解决方案可用于在调用方法时创建命名参数。虽然,这似乎只适用于内部静态类作为生成器,还是我错了?我看过一些有关构建器模式的教程,但对于我尝试做的事情,它们似乎真的很复杂。有什么办法可以使Foo类和Builder类保持分离,同时又可以受益于上述代码的命名参数? 下面是一个典型的设置: 问题答案: 使用组成。为了使事情变得更加轻松和整洁,请不要在source()和

    • II有一个serie对象包含3列(名称,代码,值),我从下面的函数得到: 意甲看起来像这样 我可以用下面的代码将输出分配给我的数据帧。 我得到的数据框是这样的 如何将此列拆分为3列?

    • 我有2个Java项目,和。 是的依赖项。 最初包含一个,例如: 问题是,我现在需要将向下移动到中,但我无法移动向下进入,它必须保留在中。 什么是一个优雅的方法来重构这个到?