使用gradle创建第一个项目,所以我看看spring,gradle,hibernate项目如何组织gradle文件,并开始自己创建.但是,找不到错误,为什么我的配置不起作用.(子项目无法解析依赖)所以项目树:
Root project 'foobar' +--- Project ':foobar-app' | +--- Project ':foobar-app:people' | | +--- Project ':foobar-app:people:people-api' | | +--- Project ':foobar-app:people:people-core' | | +--- Project ':foobar-app:people:people-data' | | \--- Project ':foobar-app:people:people-rest' | \--- Project ':foobar-app:realtor' +--- Project ':foobar-starter' \--- Project ':foobar-system' +--- Project ':foobar-system:foobar-system-jpa' +--- Project ':foobar-system:foobar-system-neo4j' +--- Project ':foobar-system:foobar-system-persistence' +--- Project ':foobar-system:foobar-system-repository' \--- Project ':foobar-system:foobar-system-tx'
问题是,当我使用依赖集等制作foobar-system-jpa.gradle文件时,它不起作用 - 这个模块不能达到依赖性.但是当在root'foobar'build.gradle为'foobar-system-jpa'子项目制作一组deps时 - 它'工作正常.为什么?
我的root build.gradle:
configurations.all { // check for updates every build resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } configure(allprojects) { project -> group = 'com.foobar' version = '0.0.1-SNAPSHOT' apply from: "${rootDir}/dependencies.gradle" apply plugin: 'maven' apply plugin: 'idea' ext.gradleScriptDir = "${rootProject.projectDir}/gradle" apply from: "${gradleScriptDir}/task.gradle" } configure(subprojects) { subproject -> apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7 apply from: "${rootDir}/dependencies.gradle" repositories { mavenCentral() maven { url "http://m2.neo4j.org/" } maven { url "http://repo.maven.apache.org/maven2" } } dependencies { testCompile (libs.junit) testCompile (libs.mockito) testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3' } }
我的dependecies.gradle
ext { springVersion = "4.0.0.RELEASE" jUnitVersion = "4.11" hibernateVersion = "4.2.1.Final" libs = [ //springframework spring_core: "org.springframework:spring-core:$springVersion", spring_orm: "org.springframework:spring-orm:$springVersion", ...... hibernate_entitymanager: "org.hibernate:hibernate-entitymanager:$hibernateVersion", hibernate_persistence: "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final", //database postgresql : "org.postgresql:postgresql:9.3-1100-jdbc41", commons_dbcp : "commons-dbcp:commons-dbcp:1.4", ..... ] }
和我的settings.gradle
rootProject.name = 'foobar' include ':foobar-system:foobar-system-jpa' .... include ':foobar-app:people:people-rest' include ':foobar-app:people:people-core' .... include ':foobar-starter' project(':foobar-system:foobar-system-jpa').projectDir = "$rootDir/foobar-system/foobar-system-jpa" as File project(':foobar-system:foobar-system-repository').projectDir = "$rootDir/foobar-system/foobar-system-repository" as File ..... project(':foobar-app').projectDir = "$rootDir/foobar-app" as File project(':foobar-starter').projectDir = "$rootDir/foobar-starter" as File rootProject.children.each { project -> project.buildFileName = "${project.name}.gradle" assert project.projectDir.isDirectory() assert project.buildFile.exists() assert project.buildFile.isFile() }
所以,foobar-system-jpa.gradle 不起作用(模块无法编译,导致找不到任何依赖)
dependencies { compile libs.spring_orm compile (libs.spring_data_jpa) { exclude(module: 'spring-jdbc') exclude(module: 'spring-orm') } compile libs.hibernate_entitymanager compile libs.postgresql compile libs.commons_dbcp compile project(':foobar-system:foobar-system-tx') }
谢谢你的回复.如需灵感,请查看此项目https://github.com/hibernate/hibernate-orm/blob/master/hibernate-entitymanager/hibernate-entitymanager.gradle
UPD:删除一些不必要的代码