Sfoglia il codice sorgente

Merge pull request #574 from jMonkeyEngine/cleanup_build_scripts_master

Improve build scripts (master)
Kirill Vainer 8 anni fa
parent
commit
a784818211

+ 1 - 0
.gitignore

@@ -14,6 +14,7 @@
 *.jnilib
 *.dylib
 *.iml
+.gradletasknamecache
 .DS_Store
 /jme3-core/src/main/resources/com/jme3/system/version.properties
 /jme3-*/build/

+ 32 - 17
.travis.yml

@@ -1,20 +1,46 @@
 language: java
 sudo: false
 
-jdk:
-  - oraclejdk8
+branches:
+  only:
+  - master
+  - v3.1
+
+matrix:
+  include:
+  - os: linux
+    jdk: oraclejdk8
+    env: UPLOAD=true
+  - os: linux
+    jdk: openjdk7
 
 addons:
-  ssh_known_hosts: updates.jmonkeyengine.org
+  apt:
+    packages:
+    - gcc-multilib
+    - g++-multilib
+
+before_install:
+  - git fetch --unshallow
 
 before_cache:
-  - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- 
+  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
+  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/
+
 cache:
   directories:
     - $HOME/.gradle/caches/
     - $HOME/.gradle/wrapper/
 
+install:
+  - ./gradlew assemble
+
+script:
+  - ./gradlew check
+
+after_success:
+  - '[ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && [ -n "$UPLOAD" ] && ./gradlew bintrayUpload || :'
+
 notifications:
   slack:
     on_success: change
@@ -22,12 +48,6 @@ notifications:
     rooms:
       secure: "PWEk4+VL986c3gAjWp12nqyifvxCjBqKoESG9d7zWh1uiTLadTHhZJRMdsye36FCpz/c/Jt7zCRO/5y7FaubQptnRrkrRfjp5f99MJRzQVXnUAM+y385qVkXKRKd/PLpM7XPm4AvjvxHCyvzX2wamRvul/TekaXKB9Ti5FCN87s="
 
-install:
-  - ./gradlew assemble
-
-script:
-  - ./gradlew check
-
 before_deploy:
   - ./gradlew createZipDistribution
   - export RELEASE_DIST=$(ls build/distributions/*.zip)
@@ -43,9 +63,6 @@ deploy:
     repo: jMonkeyEngine/jmonkeyengine
     tags: true
 
-before_install:
-  - git fetch --unshallow
-  - "[ $TRAVIS_PULL_REQUEST == 'false' ] && openssl aes-256-cbc -K $encrypted_a1949b55824a_key -iv $encrypted_a1949b55824a_iv -in private/www-updater.key.enc -out private/www-updater.key -d || :"
 
 # before_install:
   # required libs for android build tools
@@ -57,6 +74,4 @@ before_install:
   # 7z x ndk.bin -y > /dev/null
   # export ANDROID_NDK=`pwd`/android-ndk-r10c
 
-after_success:
-  - '[ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && ./gradlew uploadArchives || :'
-  - '[ -n "$TRAVIS_TAG" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ] && ./gradlew uploadArchives bintrayUpload || :'
+

+ 50 - 0
appveyor.yml

@@ -0,0 +1,50 @@
+version: 1.0.{build}.{branch}
+
+branches:
+  only:
+  - master
+
+only_commits:
+  files:
+    - jme3-bullet-native/
+
+skip_tags: true
+
+max_jobs: 1
+
+clone_depth: 1
+
+image: Visual Studio 2013
+
+environment:
+  priv_key:
+    secure: g0Q/3gQcGBr74DyDiaTi48DSKEuNAympaHF0pjWeeQgKlPZEBUNPKbBM+okJn13/IvEo5YiQO19l/0G0B6J0oiEAm9h8x+I31jskKFUD5Og9xZkZB0m0aI7zoBReiZTqojIBw8zZo4xXCkOhFTrzxaeJtqdtcObPFGWk4uUdPlcne3e81NHj6TWax2tx+yqA0i6Jkz+Jd+XvbicskgthjCmcNz07XhS7F6niC8REbSU=
+
+init:
+- ps: >-
+    $fileContent = "-----BEGIN EC PRIVATE KEY-----`n"
+    $fileContent += $env:priv_key.Replace(' ', "`n")
+    $fileContent += "`n-----END EC PRIVATE KEY-----`n"
+    Set-Content c:\users\appveyor\.ssh\id_rsa $fileContent
+
+install:
+  - cmd: del C:\Users\appveyor\.gradle\caches\modules-2\modules-2.lock
+
+build_script:
+  - cmd: gradlew.bat --no-daemon -PbuildNativeProjects=true :jme3-bullet-native:assemble
+
+cache:
+- C:\Users\appveyor\.gradle\caches
+- C:\Users\appveyor\.gradle\wrapper
+- jme3-bullet-native\bullet3.zip
+
+test: off
+deploy: off
+
+on_success:
+- cmd: >-
+    git checkout -q %APPVEYOR_REPO_BRANCH%
+    git add -- jme3-bullet-native/libs/native/windows/
+    git commit -m "[ci skip] bullet: update windows natives"
+    git pull -q --rebase
+    git push [email protected]:jMonkeyEngine/jmonkeyengine.git

+ 27 - 26
build.gradle

@@ -29,31 +29,32 @@ task run(dependsOn: ':jme3-examples:run') {
 
 defaultTasks 'run'
 
-task libDist(dependsOn: subprojects.build) << {
-//    description 'Builds and copies the engine binaries, sources and javadoc to build/libDist'
-    File libFolder = mkdir("$buildDir/libDist/lib")
-    File sourceFolder = mkdir("$buildDir/libDist/sources")
-    File javadocFolder = mkdir("$buildDir/libDist/javadoc")
-    subprojects.each {project ->
-        if(project.ext.mainClass == ''){
-            project.tasks.withType(Jar).each {archiveTask ->
-                if(archiveTask.classifier == "sources"){
-                    copy {
-                        from archiveTask.archivePath
-                        into sourceFolder
-                        rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
-                    }
-                } else if(archiveTask.classifier == "javadoc"){
-                    copy {
-                        from archiveTask.archivePath
-                        into javadocFolder
-                        rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
-                    }
-                } else{
-                    copy {
-                        from archiveTask.archivePath
-                        into libFolder
-                        rename {project.name + '.' + archiveTask.extension}
+task libDist(dependsOn: subprojects.build, description: 'Builds and copies the engine binaries, sources and javadoc to build/libDist') {
+    doLast {
+        File libFolder = mkdir("$buildDir/libDist/lib")
+        File sourceFolder = mkdir("$buildDir/libDist/sources")
+        File javadocFolder = mkdir("$buildDir/libDist/javadoc")
+        subprojects.each {project ->
+            if(project.ext.mainClass == ''){
+                project.tasks.withType(Jar).each {archiveTask ->
+                    if(archiveTask.classifier == "sources"){
+                        copy {
+                            from archiveTask.archivePath
+                                into sourceFolder
+                                rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
+                        }
+                    } else if(archiveTask.classifier == "javadoc"){
+                        copy {
+                            from archiveTask.archivePath
+                                into javadocFolder
+                                rename {project.name + '-' + archiveTask.classifier +'.'+ archiveTask.extension}
+                        }
+                    } else{
+                        copy {
+                            from archiveTask.archivePath
+                                into libFolder
+                                rename {project.name + '.' + archiveTask.extension}
+                        }
                     }
                 }
             }
@@ -115,7 +116,7 @@ task mergedSource(type: Copy){
 }
 
 task wrapper(type: Wrapper, description: 'Creates and deploys the Gradle wrapper to the current directory.') {
-    gradleVersion = '2.13'
+    gradleVersion = '3.2.1'
 }
 
 ext {

+ 0 - 19
common.gradle

@@ -18,16 +18,11 @@ repositories {
     }
 }
 
-configurations {
-    deployerJars
-}
-
 dependencies {
     // Adding dependencies here will add the dependencies to each subproject.
     testCompile group: 'junit', name: 'junit', version: '4.12'
     testCompile group: 'org.mockito', name: 'mockito-core', version: '2.0.28-beta'
     testCompile group: 'org.easytesting', name: 'fest-assert-core', version: '2.0M10'
-    deployerJars "org.apache.maven.wagon:wagon-ssh:2.9"
 }
 
 jar {
@@ -116,17 +111,3 @@ artifacts {
     archives writeFullPom.outputs.files[0]
 }
 
-uploadArchives {
-    repositories.mavenDeployer {
-        configuration = configurations.deployerJars
-        
-        // disable this otherwise it will fill up the server with stale jars
-        uniqueVersion = false
-        
-        repository(url: "scp://updates.jmonkeyengine.org/var/www/updates/maven") {
-             authentication(userName: "www-updater", privateKey: "private/www-updater.key")
-        }
-        
-        pom.project pomConfig
-    }
-}

+ 2 - 5
gradle.properties

@@ -8,7 +8,7 @@ jmeVersionTag = SNAPSHOT
 jmeVersionTagID = 0
 
 # specify if JavaDoc should be built
-buildJavaDoc = true
+buildJavaDoc = false
 
 # specify if SDK and Native libraries get built
 buildNativeProjects = false
@@ -21,10 +21,7 @@ ndkPath = /opt/android-ndk-r10c
 # Path for downloading native Bullet
 bulletUrl = https://github.com/bulletphysics/bullet3/archive/2.83.7.zip
 bulletFolder = bullet3-2.83.7
-bulletZipFile = bullet.zip
-
-# Path for downloading NetBeans Base
-netbeansUrl = http://download.netbeans.org/netbeans/8.0.2/final/zip/netbeans-8.0.2-201411181905-javase.zip
+bulletZipFile = bullet3.zip
 
 # POM settings
 POM_NAME=jMonkeyEngine

+ 2 - 2
gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
-#Sat Apr 30 16:44:31 EDT 2016
+#Fri Nov 25 13:05:50 EST 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-bin.zip

+ 52 - 50
jme3-bullet-native-android/build.gradle

@@ -102,56 +102,58 @@ task copyJmeAndroid(type: Copy, dependsOn:copyJmeCpp) {
     into outputDir
 }
 
-task generateNativeHeaders(dependsOn: copyJmeAndroid) << {
-    String destDirPath = jniPath
-    String classes = " \
-            com.jme3.bullet.PhysicsSpace, \
-            \
-            com.jme3.bullet.collision.PhysicsCollisionEvent, \
-            com.jme3.bullet.collision.PhysicsCollisionObject,\
-            com.jme3.bullet.objects.PhysicsCharacter, \
-            com.jme3.bullet.objects.PhysicsGhostObject, \
-            com.jme3.bullet.objects.PhysicsRigidBody, \
-            com.jme3.bullet.objects.PhysicsVehicle, \
-            com.jme3.bullet.objects.VehicleWheel, \
-            com.jme3.bullet.objects.infos.RigidBodyMotionState, \
-            \
-            com.jme3.bullet.collision.shapes.CollisionShape, \
-            com.jme3.bullet.collision.shapes.BoxCollisionShape, \
-            com.jme3.bullet.collision.shapes.CapsuleCollisionShape, \
-            com.jme3.bullet.collision.shapes.CompoundCollisionShape, \
-            com.jme3.bullet.collision.shapes.ConeCollisionShape, \
-            com.jme3.bullet.collision.shapes.CylinderCollisionShape, \
-            com.jme3.bullet.collision.shapes.GImpactCollisionShape, \
-            com.jme3.bullet.collision.shapes.HeightfieldCollisionShape, \
-            com.jme3.bullet.collision.shapes.HullCollisionShape, \
-            com.jme3.bullet.collision.shapes.MeshCollisionShape, \
-            com.jme3.bullet.collision.shapes.PlaneCollisionShape, \
-            com.jme3.bullet.collision.shapes.SimplexCollisionShape, \
-            com.jme3.bullet.collision.shapes.SphereCollisionShape, \
-            \
-            com.jme3.bullet.joints.PhysicsJoint, \
-            com.jme3.bullet.joints.ConeJoint, \
-            com.jme3.bullet.joints.HingeJoint, \
-            com.jme3.bullet.joints.Point2PointJoint, \
-            com.jme3.bullet.joints.SixDofJoint, \
-            com.jme3.bullet.joints.SixDofSpringJoint, \
-            com.jme3.bullet.joints.SliderJoint, \
-            com.jme3.bullet.joints.motors.RotationalLimitMotor, \
-            com.jme3.bullet.joints.motors.TranslationalLimitMotor, \
-            \
-            com.jme3.bullet.util.NativeMeshUtil, \
-            com.jme3.bullet.util.DebugShapeFactory"
-
-    String projectClassPath = configurations.runtime.asFileTree.matching {
-        exclude ".gradle"
-    }.asPath
-
-    exec {
-        executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
-        args '-d', destDirPath
-        args '-classpath', projectClassPath
-        args classes.split(",").collect { it.trim() }
+task generateNativeHeaders(dependsOn: copyJmeAndroid) {
+    doLast {
+        String destDirPath = jniPath
+        String classes = " \
+                com.jme3.bullet.PhysicsSpace, \
+                \
+                com.jme3.bullet.collision.PhysicsCollisionEvent, \
+                com.jme3.bullet.collision.PhysicsCollisionObject,\
+                com.jme3.bullet.objects.PhysicsCharacter, \
+                com.jme3.bullet.objects.PhysicsGhostObject, \
+                com.jme3.bullet.objects.PhysicsRigidBody, \
+                com.jme3.bullet.objects.PhysicsVehicle, \
+                com.jme3.bullet.objects.VehicleWheel, \
+                com.jme3.bullet.objects.infos.RigidBodyMotionState, \
+                \
+                com.jme3.bullet.collision.shapes.CollisionShape, \
+                com.jme3.bullet.collision.shapes.BoxCollisionShape, \
+                com.jme3.bullet.collision.shapes.CapsuleCollisionShape, \
+                com.jme3.bullet.collision.shapes.CompoundCollisionShape, \
+                com.jme3.bullet.collision.shapes.ConeCollisionShape, \
+                com.jme3.bullet.collision.shapes.CylinderCollisionShape, \
+                com.jme3.bullet.collision.shapes.GImpactCollisionShape, \
+                com.jme3.bullet.collision.shapes.HeightfieldCollisionShape, \
+                com.jme3.bullet.collision.shapes.HullCollisionShape, \
+                com.jme3.bullet.collision.shapes.MeshCollisionShape, \
+                com.jme3.bullet.collision.shapes.PlaneCollisionShape, \
+                com.jme3.bullet.collision.shapes.SimplexCollisionShape, \
+                com.jme3.bullet.collision.shapes.SphereCollisionShape, \
+                \
+                com.jme3.bullet.joints.PhysicsJoint, \
+                com.jme3.bullet.joints.ConeJoint, \
+                com.jme3.bullet.joints.HingeJoint, \
+                com.jme3.bullet.joints.Point2PointJoint, \
+                com.jme3.bullet.joints.SixDofJoint, \
+                com.jme3.bullet.joints.SixDofSpringJoint, \
+                com.jme3.bullet.joints.SliderJoint, \
+                com.jme3.bullet.joints.motors.RotationalLimitMotor, \
+                com.jme3.bullet.joints.motors.TranslationalLimitMotor, \
+                \
+                com.jme3.bullet.util.NativeMeshUtil, \
+                com.jme3.bullet.util.DebugShapeFactory"
+
+        String projectClassPath = configurations.runtime.asFileTree.matching {
+            exclude ".gradle"
+        }.asPath
+
+        exec {
+            executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
+            args '-d', destDirPath
+            args '-classpath', projectClassPath
+            args classes.split(",").collect { it.trim() }
+        }
     }
 }
 

+ 1 - 26
jme3-bullet-native/build.gradle

@@ -163,31 +163,6 @@ model {
             operatingSystem "linux"
         }
     }
-
-    toolChains {
-        gcc(Gcc)
-	clang(Clang)
-        mingw_x86(Gcc) {
-            eachPlatform() {
-                cCompiler.executable "i686-w64-mingw32-gcc"
-                cppCompiler.executable "i686-w64-mingw32-g++"
-                linker.executable "i686-w64-mingw32-g++"
-                assembler.executable "i686-w64-mingw32-g++"
-                staticLibArchiver.executable "i686-w64-mingw32-gcc-ar"
-            }
-            target("Windows32")
-        }
-        mingw_x86_64(Gcc) {
-            eachPlatform() {
-                cCompiler.executable "x86_64-w64-mingw32-gcc"
-                cppCompiler.executable "x86_64-w64-mingw32-g++"
-                linker.executable "x86_64-w64-mingw32-g++"
-                assembler.executable "x86_64-w64-mingw32-g++"
-                staticLibArchiver.executable "x86_64-w64-mingw32-gcc-ar"
-            }
-            target("Windows64")
-        }
-    }
 }
 
 // Java source sets for IDE access and source jar bundling / mavenization
@@ -215,7 +190,7 @@ unzipBullet.dependsOn {
     }
 }
 
-task unzipBulletIfNeeded << {
+task unzipBulletIfNeeded {
 }
 
 unzipBulletIfNeeded.dependsOn {

+ 60 - 58
jme3-examples/build.gradle

@@ -63,69 +63,71 @@ jar.doFirst{
 
 task dist (dependsOn: ['build', ':jme3-jogl:jar', ':jme3-bullet:jar', ':jme3-android:jar', \
                        ':jme3-android-native:jar', ':jme3-bullet-native-android:jar', \
-                       ':jme3-bullet-native:jar']) << {
-    // Copy all dependencies to ../dist/lib, remove versions from jar files
-    configurations.compile.resolvedConfiguration.resolvedArtifacts.each { artifact ->
-        copy {
-            from artifact.file
-            into '../dist/lib'
-            if(artifact.classifier != null){
-                rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
-            } else{
-                rename { "${artifact.name}.${artifact.extension}" }
+                       ':jme3-bullet-native:jar']) {
+    doLast {
+        // Copy all dependencies to ../dist/lib, remove versions from jar files
+        configurations.compile.resolvedConfiguration.resolvedArtifacts.each { artifact ->
+            copy {
+                from artifact.file
+                into '../dist/lib'
+                if(artifact.classifier != null){
+                    rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
+                } else{
+                    rename { "${artifact.name}.${artifact.extension}" }
+                }
             }
         }
-    }
-    copy {
-        from jar.archivePath
-        into '../dist'
-        rename { "jMonkeyEngine3.jar" }
-    }
-    // Copy JOGL packages, remove version
-    def config = project(':jme3-jogl').configurations.runtime.copyRecursive({ !(it instanceof ProjectDependency); })
-    config.resolvedConfiguration.resolvedArtifacts.each {artifact ->
-        copy{
-            from artifact.file
-            into '../dist/opt/jogl/lib'
-            if(artifact.classifier != null){
-                rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
-            } else{
-                rename { "${artifact.name}.${artifact.extension}" }
+        copy {
+            from jar.archivePath
+            into '../dist'
+            rename { "jMonkeyEngine3.jar" }
+        }
+        // Copy JOGL packages, remove version
+        def config = project(':jme3-jogl').configurations.runtime.copyRecursive({ !(it instanceof ProjectDependency); })
+        config.resolvedConfiguration.resolvedArtifacts.each {artifact ->
+            copy{
+                from artifact.file
+                into '../dist/opt/jogl/lib'
+                if(artifact.classifier != null){
+                    rename { "${artifact.name}-${artifact.classifier}.${artifact.extension}" }
+                } else{
+                    rename { "${artifact.name}.${artifact.extension}" }
+                }
             }
         }
-    }
-    copy {
-        from project(':jme3-jogl').jar.archivePath
-        into '../dist/opt/jogl'
-        rename {project(':jme3-jogl').name+".jar"}
-    }
+        copy {
+            from project(':jme3-jogl').jar.archivePath
+            into '../dist/opt/jogl'
+            rename {project(':jme3-jogl').name+".jar"}
+        }
 
-    // Copy bullet packages, remove version
-    copy {
-        from project(':jme3-bullet').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet').name+".jar"}
-    }
-    copy {
-        from project(':jme3-bullet-native').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet-native').name+".jar"}
-    }
+        // Copy bullet packages, remove version
+        copy {
+            from project(':jme3-bullet').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet').name+".jar"}
+        }
+        copy {
+            from project(':jme3-bullet-native').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet-native').name+".jar"}
+        }
 
-    // Copy android packages, remove version
-    copy {
-        from project(':jme3-android').jar.archivePath
-        into '../dist/opt/android'
-        rename {project(':jme3-android').name+".jar"}
-    }
-    copy {
-        from project(':jme3-android-native').jar.archivePath
-        into '../dist/opt/android'
-        rename {project(':jme3-android-native').name+".jar"}
-    }
-    copy {
-        from project(':jme3-bullet-native-android').jar.archivePath
-        into '../dist/opt/native-bullet'
-        rename {project(':jme3-bullet-native-android').name+".jar"}
+        // Copy android packages, remove version
+        copy {
+            from project(':jme3-android').jar.archivePath
+            into '../dist/opt/android'
+            rename {project(':jme3-android').name+".jar"}
+        }
+        copy {
+            from project(':jme3-android-native').jar.archivePath
+            into '../dist/opt/android'
+            rename {project(':jme3-android-native').name+".jar"}
+        }
+        copy {
+            from project(':jme3-bullet-native-android').jar.archivePath
+            into '../dist/opt/native-bullet'
+            rename {project(':jme3-bullet-native-android').name+".jar"}
+        }
     }
 }

BIN
private/www-updater.key.enc


+ 3 - 1
settings.gradle

@@ -15,7 +15,9 @@ include 'jme3-desktop'
 include 'jme3-blender'
 include 'jme3-jogl'
 include 'jme3-lwjgl'
-include 'jme3-lwjgl3'
+if (JavaVersion.current().isJava8Compatible()) {
+    include 'jme3-lwjgl3'
+}
 
 // Other external dependencies
 include 'jme3-jbullet'

+ 15 - 18
version.gradle

@@ -1,7 +1,7 @@
 /*
  Version Info Examples
  =====================
- 
+
  Nightly Build Snapshot
  * git tag:
  * Full Version: 3.1-5124
@@ -22,14 +22,14 @@
  * POM Version: 3.1.0-alpha1
  * NBM Revision: 0
  * NBM UC Suffix: stable/3.1/plugins
- 
+
  Final Release
  * git tag: v3.1.0
  * Full Version: 3.1
  * POM Version: 3.1.0
  * NBM Revision: 0
  * NBM UC Suffix: stable/3.1/plugins
- */ 
+ */
 
 import java.text.SimpleDateFormat
 import org.ajoberstar.grgit.*
@@ -45,7 +45,6 @@ buildscript {
 
 ext {
     jmeRevision     = 0
-    jmeNbmRevision  = 0
     jmeGitHash      = ""
     jmeGitTag       = ""
     jmeShortGitHash = ""
@@ -53,7 +52,6 @@ ext {
     jmeBranchName   = "unknown"
     jmeFullVersion  = "${jmeVersion}-UNKNOWN"
     jmePomVersion   = "unknown"
-    jmeNbmUcSuffix  = "unknown"
 }
 
 def getReleaseInfo(String tag) {
@@ -122,47 +120,46 @@ task configureVersionInfo {
         jmeShortGitHash = head.abbreviatedId
         jmeBranchName = grgit.branch.current.name
         jmeGitTag = grgit.tag.list().find { it.commit == head }
-        
+
         if (jmeGitTag != null) {
             jmeGitTag = jmeGitTag.name
         } else {
-            jmeGitTag = System.env.TRAVIS_TAG
+            if (System.env.APPVEYOR_REPO_TAG == "true") {
+                jmeGitTag = System.env.APPVEYOR_REPO_TAG_NAME
+            } else {
+                jmeGitTag = System.env.TRAVIS_TAG
+            }
         }
 
         def releaseInfo = getReleaseInfo(jmeGitTag)
         if (releaseInfo != null) {
             jmeFullVersion = "${releaseInfo.baseVersion}${releaseInfo.releaseSuffix}"
             jmePomVersion = "${releaseInfo.mainVersion}${releaseInfo.releaseSuffix}"
-            jmeNbmRevision = "0"
-            jmeNbmUcSuffix = "stable/${releaseInfo.baseVersion}/plugins"
         } else {
             // SNAPSHOT
             jmeFullVersion = jmeMainVersion
             jmePomVersion  = jmeVersion
             if (System.env.TRAVIS_BRANCH != null) {
                 jmeBranchName = System.env.TRAVIS_BRANCH
+            } else if (System.env.APPVEYOR_REPO_BRANCH != null) {
+                jmeBranchName = System.env.APPVEYOR_REPO_BRANCH
             }
-            if (System.env.TRAVIS_PULL_REQUEST != null && 
+            if (System.env.TRAVIS_PULL_REQUEST != null &&
                 System.env.TRAVIS_PULL_REQUEST != "false") {
                 jmeBranchName += "-pr-" + System.env.TRAVIS_PULL_REQUEST
+            } else if (System.env.APPVEYOR_PULL_REQUEST_NUMBER != null) {
+                jmeBranchName += "-pr-" + System.env.APPVEYOR_PULL_REQUEST_NUMBER
             }
             if (jmeBranchName != "master") {
                 jmeFullVersion += "-${jmeBranchName}"
                 jmePomVersion  += "-${jmeBranchName}"
-                jmeNbmUcSuffix = "${jmeBranchName}-"
-            } else {
-                jmeNbmUcSuffix = ""
             }
-            jmeNbmUcSuffix += "nightly/" + jmeMainVersion + "/plugins"
             jmeFullVersion += "-${jmeRevision}"
             jmePomVersion  += "-SNAPSHOT"
-            jmeNbmRevision = jmeRevision
         }
-            
+
         logger.warn("Full Version: ${jmeFullVersion}")
         logger.warn("POM Version: ${jmePomVersion}")
-        logger.warn("NBM Revision: ${jmeNbmRevision}")
-        logger.warn("NBM UC Suffix: ${jmeNbmUcSuffix}")
     } catch (ex) {
         // Failed to get repo info
         logger.warn("Failed to get repository info: " + ex.message + ". " + \