-
Notifications
You must be signed in to change notification settings - Fork 497
/
build.gradle
executable file
·213 lines (181 loc) · 7.09 KB
/
build.gradle
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
// DON'T TOUCH THE BUILDSCTPT[] BLOCK
// its special, and it is only there to make ForgeGradle work correctly.
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.1-SNAPSHOT'
}
}
apply plugin: 'forge' // adds the forge dependency
apply plugin: 'maven' // for uploading to a maven repo
// grab buildNumber
ext.buildnumber = 0 // this will be referenced as simply project.buildnumber from now on.
if (System.getenv().BUILD_NUMBER)
project.buildnumber = System.getenv().BUILD_NUMBER
else
logger.lifecycle "SETTING BUILDNUMBER TO 0"
version = "5.1.0"
group= "com.mod-buildcraft"
archivesBaseName = "buildcraft" // the name that all artifacts will use as a base. artifacts names follow this pattern: [baseName]-[appendix]-[version]-[classifier].[extension]
minecraft {
version = "1.7.2-10.12.0.1029" // McVersion-ForgeVersion this variable is later changed to contain only the MC version, while the apiVersion variable is used for the forge version. Yeah its stupid, and will be changed eentually.
assetDir = "run/assets" // the place for ForgeGradle to download the assets. The assets that the launcher gets and stuff
// replacing stuff in the source
replace '@VERSION@', project.version
replace '@MC_VERSION@', version
replace '@BUILD_NUMBER@', project.buildnumber
}
// configure the source folders
sourceSets {
main {
java {
srcDir 'common'
// exclude 'some exclusion'
// include 'some inclusion'
}
resources {
srcDir 'buildcraft_resources'
srcDir '../BuildCraft-Localization'
exclude '**/.md' // exclude readme from localization repo
// exclude 'some exclusion'
// include 'some inclusion'
}
}
}
processResources
{
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace version and mcversion
// ${version} and ${mcversion} are the exact strings being replaced
expand 'version':project.version, 'mcversion':project.minecraft.version, 'buildnumber':project.buildnumber
}
// copy everything else, that's not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
}
}
// --------------------
// extra jar section
// -------------------
// for the benefit of the jars, we will now now add the buildnumber to the jars
project.version += '.' + project.buildnumber
// add a source jar
task sourceJar(type: Jar) {
from sourceSets.main.allSource
classifier = 'sources'
}
// add a javadoc jar
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from 'build/docs/javadoc'
}
// because the normal output has been made to be obfuscated
task deobfJar(type: Jar) {
from sourceSets.main.output
classifier = 'dev'
}
// make sure all of these happen when we run build
build.dependsOn sourceJar, javadocJar, deobfJar
// --------------------
// maven section
// -------------------
// create the deployerJars dependency configuration
configurations {
deployerJars
}
dependencies {
// dependency in deployerJars, for maven deployment. see definition in mavenDeployer{} below
deployerJars "org.apache.maven.wagon:wagon-ssh:2.2"
}
// specify artifacts to be uploaded
artifacts {
// the default jar is already here by default
archives sourceJar
archives javadocJar
archives deobfJar
}
uploadArchives {
// make sure this happens after reobfuscation
dependsOn 'reobf'
repositories {
if (project.hasProperty("filesmaven")) { // if this is the Forge server, and this stuff is defined...
logger.info('Publishing to files server')
mavenDeployer {
// specify the jars that maven needs to deploy here
configuration = configurations.deployerJars
// authentication, again, specially set in the forge server environment
repository(url: project.filesmaven.url) {
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
}
// here you specify all your metadata
// this is the definition of the maven pom.xml. This is simply a DSL to define the XML. Not actual fields or things to set.
pom {
groupId = project.group
version = project.version + '.' + project.buildnumber
artifactId = project.archivesBaseName
project {
name project.archivesBaseName
packaging 'jar'
description 'A Minecraft mod adding all sorts of machinery'
url 'http://www.mod-buildcraft.com/'
scm {
url 'https://github.com/BuildCraft/BuildCraft'
connection 'scm:git:git://github.com/BuildCraft/BuildCraft.git'
developerConnection 'scm:git:git@github.com:BuildCraft/BuildCraft.git'
}
issueManagement {
system 'github'
url 'https://github.com/BuildCraft/BuildCraft/issues'
}
licenses {
license {
name 'Minecraft Mod Public License'
url 'http://www.mod-buildcraft.com/MMPL-1.0.txt'
distribution 'repo'
}
}
developers {
developer {
id 'SpaceToad'
name 'SpaceToad'
roles { role 'developer' }
}
developer {
id 'CovertJaguar'
name 'CovertJaguar'
roles { role 'developer' }
}
developer {
id 'SirSngir'
name 'SirSengir'
roles { role 'developer' }
}
developer {
id 'Krapht'
name 'Krapht'
roles { role 'developer' }
}
}
}
}
}
}
else
{
// otherwise publishing to the local repo in ~/.m2 is fine...
add project.repositories.mavenLocal()
}
}
}