【问题标题】:Scala/Java Spark [closed]Scala/Java Spark [关闭]
【发布时间】:2017-02-23 10:39:15
【问题描述】:

我需要帮助开发企业级 Java/Scala 应用程序,其中包含多个组件/模块,涉及多个 JARS。

目的是,目前现有的代码是作为单个 JAR 的单个组件开发的,基本上我需要一些关于如何将这个巨大的组件分解为多个 Spark/Scala 模块和自己的 JAR 的指导,以及所有常用的 util 函数需要在 CORE 等通用组件中。

这种重构背后的想法是根据用例并行调用各个组件,而不是按顺序调用每个模块

是否有任何工具可以使这个过程(至少部分)自动化,或者我们是否在 IntelliJ IDE 中内置了任何插件?

欢迎提出建议或指点。

【问题讨论】:

标签: java scala apache-spark


【解决方案1】:

AFAIK 没有工具可以做到这一点.. 但您可以使用 Maven Archetype(命令行 maven 选项)生成多模块项目(aggregator-style)。

我举了一个 maven multi module project 的例子。 我认为您可以为 Gradle 或其他工具使用相同的方法 调整你的代码

从多模块项目创建原型

为多模块项目创建原型就像为单模块项目创建原型一样简单。

只需移动到多模块项目的根目录并调用mvn archetype:create-from-project。在用作示例的原型中,某些文件需要不过滤。这是通过在 archetype.filteredExtensions 属性中为原型插件提供一些值来实现的。

$ mvn archetype:create-from-project -Darchetype.filteredExtensions=java
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   archetype
[INFO]   archetype :: business domain model
[INFO]   archetype :: business services
[INFO]   archetype :: persistence layer
[INFO]   archetype :: infrastructure
[INFO]   archetype :: remoting
[INFO]   archetype :: web services
[INFO]   archetype :: web application
[INFO]   archetype :: enterprise application
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype
[INFO]    task-segment: [archetype:create-from-project] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing archetype:create-from-project
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: business domain model
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: business services
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: persistence layer
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: infrastructure
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: remoting
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: web services
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: web application
[INFO] ------------------------------------------------------------------------
[INFO] [gwt:eclipse {execution: default}]
[INFO] Unpack native libraries required to run hosted browser
[INFO] [gwt:generateAsync {execution: default}]
[INFO] ------------------------------------------------------------------------
[INFO] Building archetype :: enterprise application
[INFO] ------------------------------------------------------------------------
[INFO] No goals needed for project - skipping
[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
[INFO] Setting property: velocimacro.messages.on => 'false'.
[INFO] Setting property: resource.loader => 'classpath'.
[INFO] Setting property: resource.manager.logwhenfound => 'false'.
[INFO] [archetype:create-from-project]
[INFO] Setting default groupId: com.capgemini.archetype
[INFO] Setting default artifactId: archetype
[INFO] Setting default version: 1.0.0-SNAPSHOT
[INFO] Setting default package: com.capgemini
[INFO] Archetype created in target/generated-sources/archetype
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 seconds
[INFO] Finished at: Mon Sep 15 19:11:17 CEST 2008
[INFO] Final Memory: 19M/36M
[INFO] ------------------------------------------------------------------------

也看看

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-11
    • 2020-06-22
    • 2015-09-13
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2022-01-10
    相关资源
    最近更新 更多