alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Hibernate example source code file (build.gradle)

This example Hibernate source code file (build.gradle) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Hibernate tags/keywords

a, a, annotationprocessor, core, dependencies, dependencies, hibernate, hibernate, jboss, jpa, metamodel, the, utf-8, utf-8

The Hibernate build.gradle source code

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

allprojects {
    repositories {
        mavenCentral()
        mavenLocal()
        mavenRepo name: 'jboss-nexus', urls: "https://repository.jboss.org/nexus/content/groups/public/"
        mavenRepo name: "jboss-snapshots", urls: "http://snapshots.jboss.org/maven2/"
    }
}

buildscript {
    repositories {
        mavenCentral()
        mavenLocal()
        mavenRepo name: 'jboss-nexus', urls: "https://repository.jboss.org/nexus/content/groups/public/"
        mavenRepo name: "jboss-snapshots", urls: "http://snapshots.jboss.org/maven2/"
    }
    dependencies {
        classpath 'org.hibernate.build.gradle:gradle-upload-auth-plugin:1.0.2'
    }
}

ideaProject {
    javaVersion = "1.6"
    withXml { provider ->
        def node = provider.asNode()
        def vcsConfig = node.component.find { it.'@name' == 'VcsDirectoryMappings' }
        vcsConfig.mapping[0].'@vcs' = 'Git'
    }
    beforeConfigured { module ->
        module.modulePaths.removeAll { it.filePath.endsWith('hibernate-core.iml') }
    }
}

ideaModule {
    moduleName = 'hibernate-core-root'
}

// build a map of the dependency artifacts to use.  Allows centralized definition of the version of artifacts to
// use.  In that respect it serves a role similar to <dependencyManagement> in Maven
slf4jVersion = '1.6.1'
libraries = [
        // Ant
        ant:            'ant:ant:1.6.5',

        // Antlr
        antlr:          'antlr:antlr:2.7.7',

        // Annotations
        commons_annotations:
                        'org.hibernate.common:hibernate-commons-annotations:4.0.0.CR2',
        jandex:         'org.jboss:jandex:1.0.0.Beta7',
        classmate:      'com.fasterxml:classmate:0.5.4',

        // Jakarta commons-collections  todo : get rid of commons-collections dependency
        commons_collections:
                        'commons-collections:commons-collections:3.1',

        // Dom4J
        dom4j:          'dom4j:dom4j:1.6.1@jar',
        jaxb:           'com.sun.xml.bind:jaxb-xjc:2.1.6',
        jaxb2_basics:   'org.jvnet.jaxb2_commons:jaxb2-basics:0.6.0',
        jaxb2_ant:      'org.jvnet.jaxb2_commons:jaxb2-basics-ant:0.6.0',

        // h2
        h2:             'com.h2database:h2:1.2.145',

        // Javassist
        javassist:      'javassist:javassist:3.12.0.GA',

        // javax
        jpa:            'org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final',
        jta:            'javax.transaction:jta:1.1',
        validation:     'javax.validation:validation-api:1.0.0.GA',
        validator:      'org.hibernate:hibernate-validator:4.2.0.Final',
        jacc:           'org.jboss.javaee:jboss-jacc-api:1.1.0.GA',

        // logging
        logging:        'org.jboss.logging:jboss-logging:3.0.0.GA',
        logging_tools:  'org.jboss.logging:jboss-logging-tools:1.0.0.Beta4',
        slf4j_api:      'org.slf4j:slf4j-api:' + slf4jVersion,
        slf4j_log4j12:  'org.slf4j:slf4j-log4j12:' + slf4jVersion,
        jcl_slf4j:      'org.slf4j:jcl-over-slf4j:' + slf4jVersion,
        jcl_api:        'commons-logging:commons-logging-api:99.0-does-not-exist',
        jcl:            'commons-logging:commons-logging:99.0-does-not-exist',

        // testing
        junit:          'junit:junit:4.8.2',
        jpa_modelgen:   'org.hibernate:hibernate-jpamodelgen:1.1.1.Final',
        shrinkwrap_api: 'org.jboss.shrinkwrap:shrinkwrap-api:1.0.0-alpha-6',
        shrinkwrap:     'org.jboss.shrinkwrap:shrinkwrap-impl-base:1.0.0-alpha-6'
]


subprojects { subProject ->
    apply plugin: 'idea'
	apply plugin: 'eclipse'

    defaultTasks 'build'

    group = 'org.hibernate'
    version = '4.0.0.CR2'

    // minimize changes, at least for now (gradle uses 'build' by default)..
    buildDir = "target"
    if ( ! subProject.name.startsWith( 'release' )  && ! subProject.name.startsWith( 'documentation' ) ) {
        apply plugin: 'java'
        apply plugin: 'maven' // for install task as well as deploy dependencies
        apply plugin: 'uploadAuth'

        configurations {
            provided {
                // todo : need to make sure these are non-exported
                description = 'Non-exported compile-time dependencies.'
            }
            jbossLoggingTool {
                description = "Dependencies for running the JBoss logging AnnotationProcessor tool"
            }
            hibernateJpaModelGenTool {
                description = "Dependencies for running the Hibernate JPA Metamodel Generator AnnotationProcessor tool"
            }
            deployerJars {
                description = 'Jars needed for doing deployment to JBoss Nexus repo'
            }
            jaxb {
                description = 'Dependencies for running ant xjc (jaxb class generation)'
            }
        }

        // appropriately inject the common dependencies into each sub-project
        dependencies {
	        compile( libraries.logging )
            testCompile( libraries.junit )
            testRuntime( libraries.slf4j_api )
            testRuntime( libraries.slf4j_log4j12 )
            testRuntime( libraries.jcl_slf4j )
            testRuntime( libraries.jcl_api )
            testRuntime( libraries.jcl )
            testRuntime( libraries.javassist )
            testRuntime( libraries.h2 )
            jbossLoggingTool( libraries.logging_tools )
            hibernateJpaModelGenTool( libraries.jpa_modelgen )
            jaxb( libraries.jaxb )
            jaxb( libraries.jaxb2_basics )
            jaxb( libraries.jaxb2_ant )
            deployerJars "org.apache.maven.wagon:wagon-http:1.0-beta-6"
        }

        aptDumpDir = file( buildDirName + "/tmp/apt" )

        sourceSets.main {
            compileClasspath += configurations.provided
        }

        sourceSets.all {
            originalJavaSrcDirs = java.srcDirs
            generatedLoggingSrcDir = file( "${buildDir}/generated-src/logging/${name}" )
            java.srcDir generatedLoggingSrcDir
        }

        task generateMainLoggingClasses(type: Compile) {
		    classpath = compileJava.classpath + configurations.jbossLoggingTool
		    source = sourceSets.main.originalJavaSrcDirs
            destinationDir = aptDumpDir
		    options.define(
                    compilerArgs: [
                            "-nowarn",
                            "-proc:only",
							"-encoding", "UTF-8",
                            "-processor", "org.jboss.logging.LoggingToolsProcessor",
                            "-s", "$sourceSets.main.generatedLoggingSrcDir.absolutePath"
                    ]
            );
            outputs.dir sourceSets.main.generatedLoggingSrcDir;
            doFirst {
                sourceSets.main.generatedLoggingSrcDir.mkdirs()
            }
        }

        // for the time being eat the annoying output from running the annotation processors
        generateMainLoggingClasses.logging.captureStandardError(LogLevel.INFO)

		compileJava.dependsOn generateMainLoggingClasses
        compileJava.options.define(compilerArgs: ["-proc:none", "-encoding", "UTF-8"])

        manifest.mainAttributes(
                provider: 'gradle',
                'Implementation-Url': 'http://hibernate.org',
                'Implementation-Version': version,
                'Implementation-Vendor': 'Hibernate.org',
                'Implementation-Vendor-Id': 'org.hibernate'
        )

        test {
            systemProperties['hibernate.test.validatefailureexpected'] = true
            maxHeapSize = "1024m"
        }

        processTestResources.doLast( {
            copy {
                from( sourceSets.test.java.srcDirs ) {
                    include '**/*.properties'
                    include '**/*.xml'
                }
                into sourceSets.test.classesDir
            }
        } )

        assemble.doLast( { install } )
        uploadArchives.dependsOn install

        targetCompatibility = "1.6"
        sourceCompatibility = "1.6"

        ideaModule {
            beforeConfigured { module ->
                module.excludeFolders.clear()
            }
            scopes.COMPILE.plus.add( configurations.provided )
            whenConfigured { module ->
                module.dependencies*.exported = true
            }
            excludeDirs = [
                    file(".gradle"),
                    file("$buildDir/classes"),
                    file("$buildDir/dependency-cache"),
                    file("$buildDir/libs"),
                    file("$buildDir/reports"),
                    file("$buildDir/test-results"),
                    file("$buildDir/tmp"),
                    file("$buildDir/matrix")
            ] as Set
        }

		eclipseClasspath {
			plusConfigurations.add( configurations.provided )
		}

        // elements used to customize the generated POM used during upload
        def pomConfig = {
            name 'A Hibernate Core Module'
            description 'A module of the Hibernate Core project'
            url 'http://hibernate.org'
            organization {
                name 'Hibernate.org'
                url 'http://hibernate.org'
            }
            issueManagement {
                system 'jira'
                url 'http://opensource.atlassian.com/projects/hibernate/browse/HHH'
            }
            scm {
                url "http://github.com/hibernate/hibernate-core"
                connection "scm:git:http://github.com/hibernate/hibernate-core.git"
                developerConnection "scm:git:git@github.com:hibernate/hibernate-core.git"
            }
            licenses {
                license {
                    name 'GNU Lesser General Public License'
                    url 'http://www.gnu.org/licenses/lgpl-2.1.html'
                    comments 'See discussion at http://hibernate.org/license for more details.'
                    distribution 'repo'
                }
            }
            developers {
                developer {
                    id 'hibernate-team'
                    name 'The Hibernate Development Team'
                    organization 'Hibernate.org'
                    organizationUrl 'http://hibernate.org'
                }
            }
        }

        subProject.basePomConfig = pomConfig

        configure(install.repositories.mavenInstaller) {
            pom.project pomConfig
        }

        uploadArchives {
            repositories.mavenDeployer {
                name = 'jbossDeployer'
                configuration = configurations.deployerJars
                pom.project pomConfig
                repository(id: "jboss-releases-repository", url: "https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/")
                snapshotRepository(id: "jboss-snapshots-repository", url: "https://repository.jboss.org/nexus/content/repositories/snapshots")
            }
        }

        task sourcesJar(type: Jar, dependsOn: compileJava) {
            from sourceSets.main.allSource
            classifier = 'sources'
        }

        artifacts {
            archives sourcesJar
        }

        uploadArchives.dependsOn sourcesJar
    }

}

dependsOnChildren()

// This is a task that generates the gradlew scripts, allowing users to run gradle without having gradle installed
// on their system.
// This task should be run by "build master" and the resulting output committed to source control.  Its outputs include:
//  1) /gradlew which is the *NIX shell script for executing builds
//  2) /gradlew.bat which is the windows bat script for for executing builds
//  3) /wrapper which is a directory named by the "jarPath" config which contains other needed files.
task wrapper(type: Wrapper) {
    // HHH-6106 - this is needed for IntellJ generation until 1.0-milestone-3 is released.
    gradleVersion = '1.0-milestone-3'
}

Other Hibernate examples (source code examples)

Here is a short list of links related to this Hibernate build.gradle source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.