apply plugin: 'java' apply plugin: 'distribution' apply plugin: 'eclipse' defaultTasks('clean', 'build') sourceCompatibility = JavaVersion.VERSION_1_8 sourceSets { mainSource { java { srcDir('src/main/java') } resources { srcDir('src/main/resources') } } testSource { java { srcDir('src/test/java') } resources { srcDir('src/test/resources') } } } repositories { mavenCentral() } dependencies { compile 'c3p0:c3p0:0.9.1.2' compile 'com.sun.mail:javax.mail:1.5.4' compile 'io.ratpack:ratpack-hikari:0.9.18' compile 'mysql:mysql-connector-java:5.1.36' compile 'org.bitlet:weupnp:0.1.3' compile 'org.eclipse.jdt.core.compiler:ecj:4.4.2' compile 'org.python:jython:2.2.1' compile 'org.slf4j:slf4j-api:1.7.12' compile 'org.slf4j:slf4j-jdk14:1.7.12' compile files('dist/libs/java-engine-1.8.jar') compile files('dist/libs/jython-engine-2.2.1.jar') compile files('dist/libs/L2J_GeoDriver.jar') compile files('dist/libs/mmocore.jar') testCompile 'org.mockito:mockito-all:2.0.2-beta' testCompile 'org.testng:testng:6.9.6' } def generalManifest = manifest { attributes('Built-By': System.getProperty('user.name'), 'Built-Date': new Date().format("yyyy-MM-dd HH:mm:ss"), 'Implementation-URL': 'http://www.l2jserver.com/', 'Class-Path': configurations.runtime.collect({ '../libs/' + it.getName() }).join(' ')) } jar { archiveName = 'l2jserver.jar' exclude('**/dbinstaller/**') exclude('**/loginserver/**') exclude('**/accountmanager/**') exclude('**/gsregistering/**') manifest { from(generalManifest) attributes ('Main-Class': 'com.l2jserver.gameserver.GameServer') } } task loginJar(type: Jar, dependsOn: classes) { from(sourceSets.main.output) archiveName = 'l2jlogin.jar' exclude('**/dbinstaller/**') exclude('**/gameserver/**') manifest { from(generalManifest) attributes('Main-Class': 'com.l2jserver.loginserver.L2LoginServer') } } task configuratorJar(type: Jar, dependsOn: classes) { from(sourceSets.main.output) archiveName = 'L2J_Configurator.jar' include('**/configurator/**') include('**/i18n/**') include('**/images/**') exclude('**/accountmanager/**') exclude('**/dbinstaller/**') exclude('**/gameserver/**') exclude('**/gsregistering/**') exclude('**/log/**') exclude('**/loginserver/**') exclude('**/status/**') exclude('**/util/**') exclude('**/Config/**') exclude('**/ConnectionFactory/**') exclude('**/Server/**') manifest { from(generalManifest) attributes('Main-Class': 'com.l2jserver.tools.configurator.ConfigUserInterface') } } task dbInstLsJar(type: Jar, dependsOn: classes) { from(sourceSets.main.output) archiveName = 'dbinst_ls.jar' include '**/dbinstaller/**' include '**/images/**' include '**/util/**' include '**/SQLFilter**' exclude '**/LauncherGS*' manifest { from(generalManifest) attributes('Main-Class': 'com.l2jserver.tools.dbinstaller.LauncherLS') } } task dbInstGsJar(type: Jar, dependsOn: classes) { from(sourceSets.main.output) archiveName = 'dbinst_gs.jar' include('**/dbinstaller/**') include('**/images/**') include('**/util/**') include('**/SQLFilter**') exclude('**/LauncherLS*') manifest { from(generalManifest) attributes 'Main-Class': 'com.l2jserver.tools.dbinstaller.LauncherGS' } } artifacts { archives loginJar, configuratorJar, dbInstLsJar, dbInstGsJar } task zip(type: Zip, dependsOn: build) { from('dist') { exclude('libs') } into('libs') { from(configurations.runtime) } into('game') { from(jar) from(configuratorJar) } into('login') { from(loginJar) } into('tools') { from(dbInstLsJar) from(dbInstGsJar) } def fileName = 'L2J_Server_' + new Date().format("yyyy-MM-dd") baseName = fileName println 'Build in build/distributions/' + fileName + '.zip' } build.finalizedBy(zip) task wrapper(type: Wrapper) { gradleVersion = '2.6-rc-1' } eclipse { project { comment 'L2J Server Project' natures 'org.eclipse.buildship.core.gradleprojectbuilde' } jdt { file { whenMerged {jdt -> def propertiesField = org.gradle.plugins.ide.internal.generator.PropertiesPersistableConfigurationObject.getDeclaredField('properties') propertiesField.accessible = true Properties properties = propertiesField.get(jdt) properties.setProperty 'org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch', 'ignore' } } } }