gradle:将spring app迁移到多项目构建

时间:2015-03-08 15:22:41

标签: java spring gradle multi-project

我遵循了tutorial。这很好。 我想用一个包含这个spring应用程序的项目创建一个多项目构建。所以我将这个项目添加到这个多项目构建的名为web的子文件夹中,添加了一个settings.gradle文件:

include 'web'

以及build.gradle文件:

apply plugin: 'application'
mainClassName = "hello.Application"

jar {
  baseName = 'VoPro'
}

dependencies {
  compile project(':web')
}

然而,当我运行$ gradle build时,我收到错误:

Could not resolve all dependencies for configuration ':runtime'.
> Cannot resolve external dependency org.springframework.boot:spring-boot-starter-web: because no repositories are defined.
  Required by:
      :test:unspecified > test:web:unspecified

为什么不能找到任何存储库?

编辑:web子项目包含以下build.gradle文件(如教程中所示):

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.2.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'

jar {
    baseName = 'gs-rest-service'
    version =  '0.1.0'
}

repositories {
    mavenCentral()
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("junit:junit")
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

1 个答案:

答案 0 :(得分:1)

您应该在 web 项目下添加一个build.gradle文件,并在那里配置相应的存储库。或者在其中添加全局 build.gradle和以下代码:

allprojects {
   repositories {
      mavenCentral()
      mavenLocal()
   }
}

基本上,多模块项目应具有以下结构

-- build.gradle // all projects configuration
-- settings.gradle //includes all modules 
-- module1
  -- build.gradle
-- module2
  -- build.gradle
-- modulen
  -- build.gradle
..

在评论中讨论: 您需要指定依赖项和版本,不知道为什么:

compile("org.springframework.boot:spring-boot-starter-web:1.2.2.RELEASE")