简体   繁体   中英

gradle not finding dependencies in the build folder

I am trying to build a gradle project.

here is my project structure :

|── build
|     |──src-gen
|
├── buildSrc
│      ├─gradle.build (2) 
| 
├── modules
│   ├── tobris-open-suite
│         ├── tobris-accounting
│         |     └── gralde.build
├         ├──tobris-admin
|               └── gralde.build
|
├── tobris-erp
      └── gralde.build (1)

here is my tobris-erp gradle.build (1)

import com.tobris.gradle.tasks.GenerateAosChangelog
import com.tobris.gradle.tasks.CheckEOLCharsInCsv

buildscript {
  ext.repos = {
   flatDir {
       dirs 'libs'
   }
    mavenCentral() {
      content {
        excludeGroup 'com.tobris'
      }
    }
    maven {
      url 'https://plugins.gradle.org/m2/'
      content {
        excludeGroup 'com.tobris'
      }
    }
    maven { url 'https://repository.tobris.com/nexus/public/' }
  }
  ext.openPlatformVersion = '5.4.13'
  ext.appVersion = '6.2.2'
  repositories repos
  dependencies {
    classpath "com.google.guava:guava:28.1-jre"
    classpath "com.opencsv:opencsv:3.9"
    classpath "gradle.plugin.nl.javadude.gradle.plugins:license-gradle-plugin:0.14.0"
    classpath "org.yaml:snakeyaml:1.25"
    
    
    classpath "org.hibernate:hibernate-core:5.6.5.Final"
    classpath  "org.hibernate:hibernate-hikaricp:5.6.5.Final"
    classpath  "org.hibernate:hibernate-validator:5.4.1.Final"
    classpath  "org.hibernate:hibernate-jcache:5.6.5.Final"    
    classpath 'javax.persistence:javax.persistence-api:2.2'
    classpath 'javax.persistence:javax.persistence-api:2.2'

    classpath "com.tobris:tobris-common:${openPlatformVersion}"
    classpath "com.tobris:tobris-core:${openPlatformVersion}"
    classpath "com.tobris:tobris-gradle:${openPlatformVersion}"
    classpath "com.tobris:tobris-test:${openPlatformVersion}"
    classpath "com.tobris:tobris-tomcat:${openPlatformVersion}"
    classpath "com.tobris:tobris-web:${openPlatformVersion}"
  }
}

allprojects { repositories repos }

apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: "com.tobris.app"

apply from: './gradle/style.gradle'

allprojects {

  configurations {
    runtimeClasspath.exclude group: "org.eclipse.birt.runtime.3_7_1", module: "org.apache.commons.codec"
  }

  apply plugin: 'idea'
  apply plugin: 'eclipse'

  group = "com.tobris"
  version = "${appVersion}"

  sourceCompatibility = 1.8
  targetCompatibility = 1.8

}

subprojects {
  group = "com.tobris.apps"
}

tobris {
  title "Tobris ERP"
  description "Tobris Entreprise Application"
}

dependencies {
  gradle.appModules.each { dir ->
    implementation project(":modules:$dir.name")
  }
}

task("dataImport", type: JavaExec) {
  main = "com.tobris.apps.erp.Main"
  classpath = sourceSets.main.runtimeClasspath
  if (System.getProperty("exec.args") != null) {
    args System.getProperty("exec.args").split()
  }
}

task archiveReports(type: Zip) {
  file("modules").traverse(type: groovy.io.FileType.DIRECTORIES, maxDepth: 1) { dir ->
    if (new File(dir, "build.gradle").exists() && new File(dir, "/src/main/resources/reports").exists()) {
      new File(dir, "/src/main/resources/reports/").listFiles().each { report ->
        from report.getPath()
      }
    }
  }

  classifier 'reports'
  includeEmptyDirs = false
  destinationDirectory = file("$buildDir/libs")
}


task generateChangeLog(type: GenerateAosChangelog) {
  group "Tobris application"
  description "Generate change logs from unreleased entries."
  files = fileTree(projectDir) {
    include '**/changelogs/**/*.yml'
    include '**/changelogs/**/*.yaml'
  }
}

task checkCsvEOL(type: CheckEOLCharsInCsv) {
  group "Tobris application"
  description "Generate change logs from unreleased entries."
  files = fileTree(projectDir) {
    exclude '**/build'
    exclude '**/bin'
    exclude '**/out'
    include '**/*.csv'
  }
}

build.finalizedBy archiveReports

and here is my buildSrc gradle.build (2) :

def repos = {
    jcenter()
    mavenCentral()
    mavenLocal()

    maven { url 'https://plugins.gradle.org/m2/' }
    maven { url 'https://repository.tobris.com/nexus/repository/maven-public/' }
}

ext.repos = repos

repositories repos
buildscript.repositories repos
dependencies {
    implementation 'org.yaml:snakeyaml:1.25'
    
    implementation "org.hibernate:hibernate-core:5.6.5.Final"
    implementation  "org.hibernate:hibernate-hikaricp:5.6.5.Final"
    implementation  "org.hibernate:hibernate-validator:5.4.1.Final"
    implementation  "org.hibernate:hibernate-jcache:5.6.5.Final"    
    implementation 'javax.persistence:javax.persistence-api:2.2'
}

I am generating database entities from XML files using hibernate. the generated classes are under the src-gen folder under the build.

the issue is when I build the project the classes under src-gen show this error /tobris-erp/build/src-gen/java/com/tobris/dms/db/DMSFile.java:9: error: package javax.persistence does not exist while the I put all the dependencies in all the gradle.build and eclipse is not showing error. I am sure that the jars are in the classpath.

Where should I put the dependencies ? any clue?

it is because of duplicate declaration of dependencies section in the gradle.build (1) :

dependencies {
  gradle.appModules.each { dir ->
    implementation project(":modules:$dir.name")
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM