/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or . */ apply from: rootProject.file( 'gradle/base-information.gradle' ) apply plugin: 'idea' apply plugin: 'distribution' idea.module { } final File documentationDir = mkdir( "${project.buildDir}/documentation" ); /** * Assembles all documentation into the {buildDir}/documentation directory. * * Depends on building the docs */ task assembleDocumentation(type: Task, dependsOn: [rootProject.project( 'documentation' ).tasks.buildDocsForPublishing]) { description = 'Assembles all documentation into the {buildDir}/documentation directory' doLast { // copy documentation outputs into target/documentation. // * this is used in building the dist bundles // * it is also used as a base to build a staged directory for documentation upload // Integrations Guide copy { from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/integrationguide" into "${documentationDir}/integrationguide" } // Getting-started Guide copy { from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/quickstart" into "${documentationDir}/quickstart" } // Topical Guide copy { from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/topical" into "${documentationDir}/topical" } // User Guide copy { from "${rootProject.project( 'documentation' ).buildDir}/asciidoc/userguide" into "${documentationDir}/userguide" } // Aggregated JavaDoc copy { from "${rootProject.project( 'documentation' ).buildDir}/javadocs" into "${documentationDir}/javadocs" } } } /** * Upload the documentation to the JBoss doc server */ task uploadDocumentation(type:Exec, dependsOn: assembleDocumentation) { description = "Uploads documentation to the JBoss doc server" final String url = "filemgmt.jboss.org:/docs_htdocs/hibernate/orm/${rootProject.ormVersion.family}"; executable 'rsync' args '-avz', '--links', '--protocol=28', "${documentationDir.absolutePath}/", url doFirst { if ( rootProject.ormVersion.isSnapshot ) { logger.error( "Cannot perform upload of SNAPSHOT documentation" ); throw new RuntimeException( "Cannot perform upload of SNAPSHOT documentation" ); } else { logger.lifecycle( "Uploading documentation [{$url}]..." ) } } doLast { logger.lifecycle( 'Done uploading documentation' ) } } /** * Configuration of the distribution plugin, used to build release bundle as both ZIP and TGZ */ distributions { main { baseName = 'hibernate-release' contents { from rootProject.file( 'lgpl.txt' ) from rootProject.file( 'changelog.txt' ) from rootProject.file( 'hibernate_logo.gif' ) into('lib/required') { from parent.project( 'hibernate-core' ).configurations.provided.files { dep -> dep.name == 'jta' } from parent.project( 'hibernate-core' ).configurations.runtime from parent.project( 'hibernate-core' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } // for now, from parent.project( 'hibernate-core' ).configurations.provided.files { dep -> dep.name == 'javassist' } } // into( 'lib/jpa' ) { // from parent.project( 'hibernate-entitymanager' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } // } into( 'lib/spatial' ) { from( ( parent.project( 'hibernate-spatial' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } + parent.project( 'hibernate-spatial' ).configurations.runtime ) - parent.project( 'hibernate-core' ).configurations.runtime - parent.project( 'hibernate-core' ).configurations.archives.allArtifacts.files ) } into( 'lib/jpa-metamodel-generator' ) { from parent.project( 'hibernate-jpamodelgen' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } } into( 'lib/envers' ) { from( ( parent.project( 'hibernate-envers' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } + parent.project( 'hibernate-envers' ).configurations.runtime ) - parent.project( 'hibernate-core' ).configurations.runtime - parent.project( 'hibernate-core' ).configurations.archives.allArtifacts.files ) } into( 'lib/osgi' ) { from( ( parent.project( 'hibernate-osgi' ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } + parent.project( 'hibernate-osgi' ).configurations.runtime ) - parent.project( 'hibernate-core' ).configurations.runtime - parent.project( 'hibernate-core' ).configurations.archives.allArtifacts.files ) from( parent.project( 'hibernate-osgi' ).extensions.karaf.features.outputFile ) } // todo : this closure is problematic as it does not write into the hibernate-release-$project.version directory // due to http://issues.gradle.org/browse/GRADLE-1450 [ 'hibernate-c3p0', 'hibernate-proxool' ].each { feature -> final String shortName = feature.substring( 'hibernate-'.length() ) // WORKAROUND http://issues.gradle.org/browse/GRADLE-1450 // into('lib/optional/' + shortName) { owner.into('lib/optional/' + shortName) { from ( ( parent.project( feature ).configurations.archives.allArtifacts.files.filter{ file -> !file.name.endsWith('-sources.jar') } + parent.project( feature ).configurations.runtime ) - parent.project( 'hibernate-core' ).configurations.runtime - parent.project( 'hibernate-core' ).configurations.archives.allArtifacts.files ) } } into('documentation') { from documentationDir } into( 'project' ) { from ( rootProject.projectDir ) { exclude( '.git' ) exclude( '.gitignore' ) exclude( 'changelog.txt' ) exclude( 'lgpl.txt' ) exclude( 'hibernate_logo.gif' ) exclude( 'tagRelease.sh' ) exclude( 'gradlew' ) exclude( 'gradlew.bat' ) exclude( 'wrapper/*' ) exclude( '**/.gradle/**' ) exclude( '**/target/**' ) exclude( '.idea' ) exclude( '**/*.ipr' ) exclude( '**/*.iml' ) exclude( '**/*.iws' ) exclude( '**/atlassian-ide-plugin.xml' ) exclude( '**/.classpath' ) exclude( '**/.project' ) exclude( '**/.settings' ) exclude( '**/.nbattrs' ) exclude( '**/out/**' ) exclude( '**/bin/**' ) exclude( 'build/**' ) exclude( '*/build/**' ) } } } } } distZip.dependsOn assembleDocumentation distTar.dependsOn assembleDocumentation distTar { compression = Compression.GZIP } /** * "virtual" task for building both types of dist bundles */ task buildBundles(type: Task, dependsOn: [distZip,distTar]) { description = "Builds all release bundles" } task uploadBundlesSourceForge(type: Exec, dependsOn: buildBundles) { description = "Uploads release bundles to SourceForge" final String url = "frs.sourceforge.net:/home/frs/project/hibernate/hibernate-orm/${version}"; executable 'rsync' args '-vr', '-e ssh', "${project.buildDir}/distributions/", url doFirst { if ( rootProject.ormVersion.isSnapshot ) { logger.error( "Cannot perform upload of SNAPSHOT bundles to SourceForge" ); throw new RuntimeException( "Cannot perform upload of SNAPSHOT bundles to SourceForge" ) } else { logger.lifecycle( "Uploading release bundles to SourceForge..." ) } } doLast { logger.lifecycle( 'Done uploading release bundles to SourceForge' ) } } configurations { bundles { description = 'Configuration used to group the archives output from the distribution plugin.' } } artifacts { bundles distTar bundles distZip } task release( dependsOn: [uploadDocumentation, uploadBundlesSourceForge] )