我正在一个项目中,该项目包含用于Spring XD的一系列模块子项目,这些子项目恰好对恰好使用Scala的非模块子项目具有临时依赖关系:

ext {
  springXdVersion = '1.1.0.RELEASE'
  moduleProjects  = subprojects.findAll { project -> project.path.startsWith(':modules.')}
  javaProjects    = subprojects - (moduleProjects + nonJavaProjects)
}

configure(moduleProjects) { moduleProject ->
  apply plugin: 'spring-xd-module'
}

project('core-dependency') {
  apply plugin: 'scala'
  // configuration/dependencies
}

project('modules.source.example') {
  dependencies {
    provided(":core-dependency")
  }
}

// More modules bearing resemblance to modules.source.example

最终将核心依赖性设置为位于我们的xd容器的类路径中,并以这种方式在运行时将其提供给模块。

不幸的是,似乎对于使用它的每个模块,都会重新编译核心依赖性(这特别昂贵,因为它还包括一个scala编译器)。这会导致构建在30分钟以内运行,我希望对此进行改进。有没有办法减少构建时间?理想情况下,我不想重新编译内核依赖性,但是考虑到bootRepackage似乎负责为每个模块触发它,因此我不确定如何实现这一目标。我还尝试了其他技巧,例如并行性,但是到目前为止,这样做只能冻结我的系统。我正在使用gradle 2.1。

我应该注意,gradle配置文件报告表明,对于每个模块,大部分时间是在configureModule步骤中进行的,根据spring-xd repo的说法,该步骤如下所示:
project.task('configureModule') << {
            project.configurations.provided.resolvedConfiguration.firstLevelModuleDependencies.each {
                excludeTransitiveDependencies(project, it)
            }
        }

最佳答案

scala依赖项来自SpringXD中的Spark streaming集成。我们正在努力消除对spring-xd-dirt的spark依赖关系,并将其从模块中投放:

https://jira.spring.io/browse/XD-2857

您依赖哪个特定的非模块子项目?如果它是spring-xd-module,那么您可以尝试1.2.0.M1,其中我们已将spark依赖项从spring-xd-module移到spring-xd-dirt

关于scala - 通过瞬时Scala依赖关系为spring-xd项目优化gradle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30513847/

10-11 03:43