Scala/Java Spark

Scala/Java Spark,java,scala,apache-spark,Java,Scala,Apache Spark,我需要关于开发企业级Java/Scala应用程序的帮助,该应用程序包含多个JAR的多个组件/模块 其目的是,目前现有的代码是作为一个带有单个JAR的单个组件开发的,基本上我需要一些关于如何使用自己的JAR将这个巨大的组件分解为多个Spark/Scala模块的指导,并且所有公共的util函数都需要在像CORE这样的公共组件中 这种重构背后的思想是根据用例并行调用单个组件,而不是按顺序调用每个模块 是否有任何工具使此过程(至少部分)自动化,或者IntelliJ IDE中是否内置了任何插件 欢迎您提出

我需要关于开发企业级Java/Scala应用程序的帮助,该应用程序包含多个JAR的多个组件/模块

其目的是,目前现有的代码是作为一个带有单个JAR的单个组件开发的,基本上我需要一些关于如何使用自己的JAR将这个巨大的组件分解为多个Spark/Scala模块的指导,并且所有公共的util函数都需要在像CORE这样的公共组件中

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

是否有任何工具使此过程(至少部分)自动化,或者IntelliJ IDE中是否内置了任何插件


欢迎您提出建议或建议。

AFAIK没有工具可以做到这一点。。 但是您可以使用Maven原型(命令行Maven选项)来生成多模块项目(聚合器样式

我举了一个maven的例子。 我认为对于Gradle或其他工具,也会有同样的方法 调整代码

从多模块项目创建原型 为多模块项目创建原型与为单个模块项目创建原型一样简单

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

$ 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] ------------------------------------------------------------------------
也看看


您可以使用基于插件的方法,其中插件由主Core运行。您可以使用gradle()或maven()或SBT中的多模块项目。