aboutsummaryrefslogtreecommitdiff
path: root/buildscript/forge-1.7.gradle
blob: 67fd4c795d047e1a8064bf1f0449804b7a8ed09b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/** Common code for Forge 1.7.10 builds */

apply plugin: 'forge'


project.version = new File(project.multiproject_structure.toBoolean() ? "${projectDir}/../version.txt" : "${projectDir}/publish/version.txt").getText('UTF-8').trim()

group = project.group
archivesBaseName = "${project.archives_base}-${project.minecraft_version}"

minecraft {
    version = "${project.minecraft_version}-${project.forge_version}"
    runDir = "run"
	replace '@VERSION@', project.version
}

// These settings allow you to choose what version of Java you want to be compatible with. Forge 1.7.10 runs on Java 6 to 8.
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
	maven {
		name = "chickenbones"
		url = "http://chickenbones.net/maven/"
	}
}

configurations {
    embed
    compile.extendsFrom(embed)
	shade
    compile.extendsFrom(shade)
}

if(project.enable_mixin.toBoolean()) {
	apply from: "buildscript/forge-1.7-mixin.gradle"
}

apply from: "project.gradle"

jar {
    from(sourceSets.main.output);

    // embed libraries in jar
    from configurations.embed.collect {
        exclude '**/LICENSE', '**/LICENSE.txt'
        it.isDirectory() ? it : zipTree(it)
    }
	
	configurations.shade.each { dep ->
        from(project.zipTree(dep)){
            exclude '**/LICENSE', '**/LICENSE.txt', 'META-INF', 'META-INF/**'
        }
    }
}

processResources {
    // This will ensure that this task is redone when the versions or any
	// user-defined properties change.
    inputs.property "version", version
    inputs.property "mcversion", project.minecraft.version
	inputs.properties project.ext.getProperties()

    filesMatching('*.info') {
        expand project.properties
    }
}

// Ensures that the encoding of source files is set to UTF-8, see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

// This task creates a .jar file containing the source code of this mod.
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = "sources"
    from sourceSets.main.allSource
}

// This task creates a .jar file containing a deobfuscated version of this mod, for other developers to use in a development environment.
task devJar(type: Jar) {
    classifier = "dev"
    from sourceSets.main.output
}

// Creates the listed artifacts on building the mod.
artifacts {
    archives sourcesJar
    archives devJar
}

// Add git commit hash to MANIFEST.MF

def getCommitHash(){
	try {
		def commitHashProc = "git describe --always --dirty".execute()
		commitHashProc.waitFor()
		if(commitHashProc.exitValue() == 0){
			def commitHash = commitHashProc.text.trim()
			
			return commitHash
		} else {
			println commitHashProc.err.text
			throw new Exception("git describe exited with non-zero return value")
		}
	} catch(Exception e){
		println "Failed to get commit version: " + e.getMessage()
	}
	return "UNKNOWN" // fallback
}


jar {
    manifest {
        attributes (
            'Commit-ID': getCommitHash(),
        )
    }
}