Using Gradle serve a front end (JS) and a backend

2019-04-10 06:27发布

问题:

Im trying to create a web application using Gradle. The front end UI will be built with Angular.js and the backend should be Java. When I say backend, I mean a Java / Spring based API that will be queried using Ajax from Angular.js.

So basically what Im trying to do is to get any URL's that start with mysite.com/api/... should be routed to the src/com/veight/client files, or in other words to the Java backend. And then any other URLs such as mysite.com/login should be handled by the JavaScript / Angular.js front end.

I have the JavaScript / Angular.js routing working for the front end using the following build.gradle file. How should I go about sending routes that match mysite.com/api/... to the Java / Spring back end?

Thank you for the help!

Note: I know that Java Spring naturally does this routing where it sends certain routes mysite.com/home to one folder and other routes mysite.com/api/... are handled buy a xml file. But I think its possible to handle this in the build.gradle file. So I was hoping to prove / disprove that theory.

File Structure

.gradle
.settings
build
gradle
src
    com
        veight
            client
WebContent

Heres my build.gradle:

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }

    dependencies {
        classpath 'org.gradle.api.plugins:gradle-tomcat-plugin:1.2.4' // Gradle Tomcat Plugin
        classpath 'com.eriwen:gradle-css-plugin:1.11.1'
        classpath 'com.eriwen:gradle-js-plugin:1.12.0'
    }
}

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'tomcat'
apply plugin: 'eclipse-wtp'
apply plugin: 'js'
apply plugin: 'css'

sourceCompatibility = 1.7
version = '1.0'

task wrapper(type: Wrapper) {
    gradleVersion = '2.0'
}

repositories {
    mavenCentral() // Allow access to the Maven Centeral Repo
}

dependencies {
    def tomcatVersion = '7.0.54'
    tomcat "org.apache.tomcat.embed:tomcat-embed-core:${tomcatVersion}",
            "org.apache.tomcat.embed:tomcat-embed-logging-juli:${tomcatVersion}"
    tomcat("org.apache.tomcat.embed:tomcat-embed-jasper:${tomcatVersion}") {
        exclude group: 'org.eclipse.jdt.core.compiler', module: 'ecj'
    }
}
sourceSets {
    main {
        java {
            srcDirs 'src'
        }
    }
}
// End: Java Plugin Configuration

// Start: Tomcat Plugin Configuration
tomcatRun {
    httpPort = 8080
    stopPort = 8081
    URIEncoding = 'utf-8'
    webAppSourceDirectory = file('WebContent')
}
eclipse {
  wtp {
    component {
      contextPath = '/'
      deployName = 'client'
    }
  }
}