build.gradle 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. //ant.importBuild 'build.xml'
  2. import groovy.xml.MarkupBuilder
  3. if (!hasProperty('mainClass')) {
  4. ext.mainClass = ''
  5. }
  6. configurations {
  7. corelibs
  8. optlibs
  9. }
  10. dependencies {
  11. corelibs project(':jme3-blender')
  12. corelibs project(':jme3-core')
  13. corelibs project(':jme3-desktop')
  14. corelibs project(':jme3-effects')
  15. corelibs project(':jme3-jbullet')
  16. corelibs project(':jme3-jogg')
  17. corelibs project(':jme3-lwjgl')
  18. corelibs project(':jme3-networking')
  19. corelibs project(':jme3-niftygui')
  20. corelibs project(':jme3-plugins')
  21. corelibs project(':jme3-terrain')
  22. // corelibs project(':jme3-testdata')
  23. optlibs project(':jme3-bullet')
  24. optlibs project(':jme3-jogl')
  25. }
  26. //task copyToLib << {
  27. // configurations.opt.resolvedConfiguration.resolvedArtifacts.each { artifact ->
  28. // copy {
  29. // from artifact.file
  30. // into '../dist/opt'
  31. // if(artifact.classifier != null){
  32. // rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
  33. // } else{
  34. // rename { "${artifact.name}.${artifact.extension}" }
  35. // }
  36. // }
  37. // }
  38. //}
  39. //build.dependsOn copyToLib
  40. artifacts {
  41. // jar null
  42. }
  43. // <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="ant-import.classpath"/>
  44. // <taskdef resource="com/jme/ant/ant-jme.properties" classpathref="ant-import.classpath"/>
  45. // <taskdef name="deb" classname="com.googlecode.ant_deb_task.Deb" classpathref="ant-import.classpath"/>
  46. // <taskdef name="gcupload" classname="net.bluecow.googlecode.ant.GoogleCodeUploadTask" classpathref="ant-import.classpath"/>
  47. // <taskdef name="desktopentry" classname="com.googlecode.ant_deb_task.DesktopEntry" classpathref="ant-import.classpath"/>
  48. //configurations {
  49. // antlibs
  50. //}
  51. //dependencies {
  52. // antlibs filetree(dir: 'ant-lib', include: '*.jar')
  53. //}
  54. //
  55. //ant.taskdef(resource: 'net/sf/antcontrib/antcontrib.properties', classpath: configurations.antlibs.asPath)
  56. //ant.taskdef(name: 'deb', classname: 'com.googlecode.ant_deb_task.Deb', classpath: configurations.antlibs.asPath)
  57. //ant.taskdef(name: 'gcupload', classname: 'net.bluecow.googlecode.ant.GoogleCodeUploadTask', classpath: configurations.antlibs.asPath)
  58. //ant.taskdef(name: 'desktopentry', classname: 'com.googlecode.ant_deb_task.DesktopEntry', classpath: configurations.antlibs.asPath)
  59. //ant.importBuild 'build.xml'
  60. ant.properties['plugins.version'] = jmeVersion
  61. ant.properties['app.version']= jmeMainVersion + jmeVersionSuffix
  62. //ant.properties.buildDir = buildDir
  63. //ant.properties['buildDir'] = buildDir
  64. //ant.property(name: 'buildDir', location: buildDir)
  65. //ant.taskdef(resource: 'checkstyletask.properties') {
  66. // classpath {
  67. // fileset(dir: 'ant-lib', includes: '*.jar')
  68. // }
  69. //}
  70. //ant.checkstyle(config: 'checkstyle.xml') {
  71. // fileset(dir: 'src')
  72. //}
  73. //task copyFiles(type: Copy) {
  74. // from 'src/files'
  75. // into "$buildDir/files"
  76. // rename '(.*)-(.*).html', '$2/$1.html'
  77. // rename ~/(.*).template.(.*)/, '$1.$2'
  78. // rename { filename ->
  79. // filename.replace 'java', 'groovy'
  80. // }
  81. //}
  82. //task copyTaskWithPatterns(type: Copy) {
  83. // from 'src/main/webapp'
  84. // into 'build/explodedWar'
  85. // include '**/*.html'
  86. // include '**/*.jsp'
  87. // exclude { details -> details.file.name.endsWith('.html') && details.file.text.contains('staging') }
  88. //}
  89. task copyBaseLibs{
  90. description "Copies the library files needed to run the SDK to "+
  91. "jme3-core-baselibs and jme3-core-libraries"
  92. dependsOn configurations.corelibs
  93. dependsOn configurations.optlibs
  94. // for each dependency in corelibs..
  95. project.configurations.corelibs.dependencies.each {dep ->
  96. // copy built jme3 jar files to jme3-core-baselibs
  97. dep.dependencyProject.configurations.archives.allArtifacts.each{ artifact->
  98. if(artifact.classifier == "sources"){
  99. } else if(artifact.classifier == "javadoc"){
  100. } else{
  101. copy {
  102. from artifact.file
  103. into "jme3-core-baselibs/release/modules/ext/"
  104. }
  105. }
  106. }
  107. // copy external jar files to jme3-core-libraries
  108. copy {
  109. from dep.dependencyProject.configurations.compile.copyRecursive({ !(it instanceof ProjectDependency); }).resolve()
  110. into "jme3-core-libraries/release/modules/ext/"
  111. }
  112. }
  113. }
  114. // workaround method to add a tag with the name "name" to an XML MarkupBuilder
  115. def makeName(builder, nameR) { builder.name nameR }
  116. def makeFile(builder, nameR) { builder.file(name:nameR, url:nameR) }
  117. task createJ2seXml{
  118. description "Creates needed J2SE library and layer XML files in jme3-project-baselibs"
  119. def eol = System.properties.'line.separator'
  120. def j2seLibraries = [] // created J2SE library descriptors
  121. // for each dependency in corelibs..
  122. project.configurations.corelibs.dependencies.each {dep ->
  123. def depJars = [] // jme3 jar files
  124. def depSources = [] // jme3 sources
  125. def depJavadocs = [] // jme3 javadoc
  126. def depExtJars = [] // external jar files
  127. j2seLibraries.add(dep.dependencyProject.name+".xml")
  128. // collect external jar files
  129. dep.dependencyProject.configurations.compile.copyRecursive({ !(it instanceof ProjectDependency); }).resolve().each{ file->
  130. depExtJars.add(file.name)
  131. }
  132. // collect internal jar files (classes, sources and javadoc)
  133. dep.dependencyProject.configurations.archives.allArtifacts.each{ artifact->
  134. if(artifact.classifier == "sources"){
  135. depSources.add(artifact.file.name)
  136. } else if(artifact.classifier == "javadoc"){
  137. depJavadocs.add(artifact.file.name)
  138. } else{
  139. if(!depJars.contains(artifact.file.name)){
  140. depJars.add(artifact.file.name)
  141. }
  142. }
  143. }
  144. // create J2SE library descriptor xml file
  145. def libraryWriter = new StringWriter()
  146. def libraryXml = new MarkupBuilder(libraryWriter)
  147. // xml.xmlDeclaration(version:'1.0')
  148. libraryWriter << '<?xml version="1.0" encoding="UTF-8"?>' << eol
  149. libraryWriter << '<!DOCTYPE library PUBLIC "-//NetBeans//DTD Library Declaration 1.0//EN" "http://www.netbeans.org/dtds/library-declaration-1_0.dtd">' << eol
  150. libraryXml.library(version:"1.0", encoding: "UTF-8"){
  151. makeName(libraryXml, "${dep.dependencyProject.name}.xml")
  152. type "j2se"
  153. "localizing-bundle" "com.jme3.gde.project.baselibs.Bundle"
  154. volume{
  155. type "classpath"
  156. depJars.each{jar ->
  157. resource "jar:nbinst://com.jme3.gde.project.baselibs/libs/${jar}!/"
  158. }
  159. depExtJars.each{jar ->
  160. resource "jar:nbinst://com.jme3.gde.project.libraries/libs/${jar}!/"
  161. }
  162. }
  163. volume{
  164. type "src"
  165. depSources.each{jar ->
  166. resource "jar:nbinst://com.jme3.gde.project.baselibs/libs/${jar}!/"
  167. }
  168. }
  169. volume{
  170. type "javadoc"
  171. depJavadocs.each{jar ->
  172. resource "jar:nbinst://com.jme3.gde.project.baselibs/libs/${jar}!/"
  173. }
  174. }
  175. }
  176. // write XML file
  177. File libraryXmlFile = file("jme3-project-baselibs/src/com/jme3/gde/project/baselibs/${dep.dependencyProject.name}.xml");
  178. libraryXmlFile.write(libraryWriter.toString())
  179. }
  180. // create layer.xml file with entries of library xml files
  181. def layerWriter = new StringWriter()
  182. def layerXml = new MarkupBuilder(layerWriter)
  183. // layerXml.xmlDeclaration(version:'1.0')
  184. layerWriter << '<?xml version="1.0" encoding="UTF-8"?>' << eol
  185. layerWriter << '<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">' << eol
  186. layerXml.filesystem{
  187. folder(name:"org-netbeans-api-project-libraries"){
  188. folder(name:"Libraries"){
  189. j2seLibraries.each{lib ->
  190. makeFile(layerXml, lib)
  191. }
  192. }
  193. }
  194. }
  195. File layerXmlFile = file("jme3-project-baselibs/src/com/jme3/gde/project/baselibs/layer.xml");
  196. layerXmlFile.write(layerWriter.toString())
  197. }
  198. task copyProjectLibs{
  199. description "Copies the jar files needed to supply the J2SE Libraries in the "+
  200. "SDK to jme3-project-baselibs and jme3-project-libraries"
  201. dependsOn configurations.corelibs
  202. dependsOn configurations.optlibs
  203. // for each dependency in corelibs..
  204. project.configurations.corelibs.dependencies.each {dep ->
  205. // copy jme3 jar files, sources and javadocs to jme3-project-baselibs
  206. dep.dependencyProject.configurations.archives.allArtifacts.each{ artifact->
  207. if(artifact.classifier == "sources"){
  208. copy {
  209. from artifact.file
  210. into "jme3-project-baselibs/release/libs/"
  211. }
  212. } else if(artifact.classifier == "javadoc"){
  213. copy {
  214. from artifact.file
  215. into "jme3-project-baselibs/release/libs/"
  216. }
  217. } else{
  218. copy {
  219. from artifact.file
  220. into "jme3-project-baselibs/release/libs/"
  221. }
  222. }
  223. }
  224. // copy external jar files to jme3-project-libraries
  225. copy {
  226. from dep.dependencyProject.configurations.compile.copyRecursive({ !(it instanceof ProjectDependency); }).resolve()
  227. into "jme3-project-libraries/release/libs/"
  228. }
  229. }
  230. }
  231. task buildSdk(){
  232. // ant.ant(dir: ".", antfile: "build.xml", target: "hudson-stable")
  233. }
  234. task cleanSdk(){
  235. // ant.ant(dir: ".", antfile: "build.xml", target: "clean")
  236. }
  237. jar.dependsOn([copyBaseLibs, copyProjectLibs, buildSdk])
  238. clean.dependsOn(cleanSdk);
  239. // <target name="-do-update-sdk">
  240. // <fileset id="jme3-jars" dir="build">
  241. // <include name="**/jME3**.jar"/>
  242. // <exclude name="**/jME3-testdata.jar"/>
  243. // <exclude name="**/jME3-bullet-natives.jar"/>
  244. // <exclude name="**/jME3-bullet-natives-android.jar"/>
  245. // <exclude name="**/jME3-openal-soft-natives-android.jar"/>
  246. // </fileset>
  247. // <fileset id="jme3-sdk-jars" dir="build">
  248. // <include name="**/jME3**.jar"/>
  249. // <exclude name="**/jME3-android.jar"/>
  250. // <exclude name="**/jME3-testdata.jar"/>
  251. // <exclude name="**/jME3-bullet.jar"/>
  252. // <exclude name="**/jME3-bullet-natives.jar"/>
  253. // <exclude name="**/jME3-bullet-natives-android.jar"/>
  254. // <exclude name="**/jME3-openal-soft-natives-android.jar"/>
  255. // </fileset>
  256. // <fileset id="jme3-bullet-native-jars" dir="${dist.dir}/opt/native-bullet">
  257. // <include name="**/jME3-bullet-native**.jar"/>
  258. // </fileset>
  259. // <fileset id="jme3-openal-soft-natives-jars" dir="${dist.dir}/opt/native-openal-soft">
  260. // <include name="**/jME3-openal-soft-natives-android.jar"/>
  261. // </fileset>
  262. // <fileset id="jme3-testdata-jars" dir="build">
  263. // <include name="**/jME3-testdata.jar"/>
  264. // </fileset>
  265. // <fileset id="jme3-lwjgl-native-jars" dir="${dist.dir}/lib">
  266. // <include name="**/jME3-lwjgl-natives.jar"/>
  267. // </fileset>
  268. // <fileset id="jme3-external-libraries" dir="${dist.dir}/lib/">
  269. // <exclude name="jME3-**"/>
  270. // <exclude name="**/nifty-examples.jar"/>
  271. // </fileset>
  272. // <echo>Clearing old files</echo>
  273. // <delete dir="${jmp_dir}/JME3TestsTemplate/src/"/>
  274. // <delete dir="${jmp_dir}/jme3-core-baselibs/release/modules/ext/"/>
  275. // <delete dir="${jmp_dir}/jme3-core-libraries/release/modules/ext/"/>
  276. // <delete dir="${jmp_dir}/jme3-project-libraries/release/libs/"/>
  277. // <delete dir="${jmp_dir}/jme3-project-baselibs/release/libs/"/>
  278. // <delete dir="${jmp_dir}/jme3-project-testdata/release/libs/"/>
  279. //
  280. // <echo>Copying jMonkeyPlatform jME3 libs</echo>
  281. // <copy toDir="${jmp_dir}/jme3-core-baselibs/release/modules/ext/" overwrite="true" failonerror="true" verbose="false" flatten="true">
  282. // <fileset refid="jme3-sdk-jars"/>
  283. // <!--natives need to be in jme3 package for jme to work in jMP-->
  284. // <fileset refid="jme3-lwjgl-native-jars"/>
  285. // </copy>
  286. //
  287. // <echo>Copying jMonkeyPlatform external libraries</echo>
  288. // <copy todir="${jmp_dir}/jme3-core-libraries/release/modules/ext/" overwrite="true" failonerror="true" verbose="false" flatten="true">
  289. // <fileset refid="jme3-external-libraries"/>
  290. // </copy>
  291. //
  292. // <echo>Copying Project jME3 libs</echo>
  293. // <copy toDir="${jmp_dir}/jme3-project-baselibs/release/libs/" overwrite="true" failonerror="true" verbose="false" flatten="true">
  294. // <fileset refid="jme3-jars"/>
  295. // <fileset refid="jme3-openal-soft-natives-jars"/>
  296. // </copy>
  297. //
  298. // <echo>Copying Project external libraries</echo>
  299. // <copy todir="${jmp_dir}/jme3-project-libraries/release/libs/" overwrite="true" failonerror="true" verbose="false" flatten="true">
  300. // <fileset refid="jme3-external-libraries"/>
  301. // <fileset refid="jme3-lwjgl-native-jars"/>
  302. // <fileset refid="jme3-bullet-native-jars"/>
  303. // </copy>
  304. //
  305. // <echo>Copying Test Project Data</echo>
  306. // <copy toDir="${jmp_dir}/jme3-project-testdata/release/libs/" overwrite="true" failonerror="true" verbose="false">
  307. // <fileset refid="jme3-testdata-jars"/>
  308. // </copy>
  309. //
  310. // <echo>Copying Javadoc</echo>
  311. // <zip destfile="${dist.dir}/jMonkeyEngine3-javadoc.zip">
  312. // <zipfileset dir="${dist.dir}/javadoc/"/>
  313. // </zip>
  314. // <copy file="${dist.dir}/jMonkeyEngine3-javadoc.zip" toDir="${jmp_dir}/jme3-project-baselibs/release/libs/" overwrite="true" failonerror="true" verbose="false"/>
  315. //
  316. // <zip destfile="${dist.dir}/jMonkeyEngine3-sources.zip">
  317. // <zipfileset dir="${src.core.dir}"/>
  318. // <zipfileset dir="${src.core-data.dir}"/>
  319. // <zipfileset dir="${src.core-effects.dir}"/>
  320. // <zipfileset dir="${src.core-plugins.dir}"/>
  321. // <zipfileset dir="${src.desktop.dir}"/>
  322. // <zipfileset dir="${src.jbullet.dir}"/>
  323. // <zipfileset dir="${src.niftygui.dir}"/>
  324. // <zipfileset dir="${src.jogg.dir}"/>
  325. // <zipfileset dir="${src.lwjgl.dir}"/>
  326. // <zipfileset dir="${src.ogre.dir}"/>
  327. // <zipfileset dir="${src.test.dir}"/>
  328. // <zipfileset dir="${src.tools.dir}"/>
  329. // <zipfileset dir="${src.xml.dir}"/>
  330. // <zipfileset dir="${src.terrain.dir}"/>
  331. // <zipfileset dir="${src.networking.dir}"/>
  332. // </zip>
  333. // <copy file="${dist.dir}/jMonkeyEngine3-sources.zip" toDir="${jmp_dir}/jme3-project-baselibs/release/libs/" overwrite="true" failonerror="true" verbose="false"/>
  334. //
  335. // <copy todir="${jmp_dir}/jme3-project-libraries/release/libs/" overwrite="true" failonerror="true" verbose="false" flatten="true">
  336. // <fileset refid="jme3-external-libraries"/>
  337. // <fileset refid="jme3-lwjgl-native-jars"/>
  338. // <fileset refid="jme3-bullet-native-jars"/>
  339. // <fileset refid="jme3-openal-soft-natives-jars"/>
  340. // <fileset dir="lib/niftygui/">
  341. // <include name="nifty-javadoc.jar"/>
  342. // <include name="nifty-default-controls-javadoc.jar"/>
  343. // </fileset>
  344. // </copy>
  345. //
  346. // <echo>Copying Test Examples</echo>
  347. // <copy todir="${jmp_dir}/JME3TestsTemplate/src/" overwrite="true" failonerror="true" verbose="false">
  348. // <fileset dir="src/test/">
  349. // <exclude name=".svn"/>
  350. // </fileset>
  351. // </copy>
  352. // <copy todir="${jmp_dir}/JME3TestsTemplateAndroid/src/" overwrite="true" failonerror="true" verbose="false">
  353. // <fileset dir="src/test/">
  354. // <exclude name=".svn"/>
  355. // </fileset>
  356. // </copy>
  357. // </target>