All Projects → bazelbuild → rules_gwt

bazelbuild / rules_gwt

Licence: Apache-2.0 license
Bazel rules for GWT

Programming Languages

Starlark
911 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to rules gwt

grab-bazel-common
Common rules and macros for Grab's Android projects built with Bazel.
Stars: ✭ 20 (+0%)
Mutual labels:  bazel, bazel-rules
rules sass
Sass rules for Bazel
Stars: ✭ 47 (+135%)
Mutual labels:  bazel, bazel-rules
bazel-latex
Bazel build system rules for LaTeX
Stars: ✭ 67 (+235%)
Mutual labels:  bazel, bazel-rules
bazel-maven-proxy
A local (read-only) proxy for Bazel to access Maven resources behind a secure repository or from the local Maven repository
Stars: ✭ 22 (+10%)
Mutual labels:  bazel, bazel-rules
rules helm
rules_helm: Bazel rules for managing helm charts
Stars: ✭ 46 (+130%)
Mutual labels:  bazel, bazel-rules
rules proto grpc
Bazel rules for building Protobuf and gRPC code and libraries from proto_library targets
Stars: ✭ 201 (+905%)
Mutual labels:  bazel, bazel-rules
rules dart
Dart rules for Bazel
Stars: ✭ 35 (+75%)
Mutual labels:  bazel, bazel-rules
Rules python
Experimental Bazel Python Rules
Stars: ✭ 233 (+1065%)
Mutual labels:  bazel, bazel-rules
rules java
Java rules for Bazel
Stars: ✭ 44 (+120%)
Mutual labels:  bazel, bazel-rules
rules appengine
AppEngine rules for Bazel
Stars: ✭ 28 (+40%)
Mutual labels:  bazel, bazel-rules
rules openapi
🍃 bazel rules for generating code from openapi specifications
Stars: ✭ 49 (+145%)
Mutual labels:  bazel, bazel-rules
rules verilator
Bazel build rules for Verilator
Stars: ✭ 14 (-30%)
Mutual labels:  bazel, bazel-rules
Rules rust
Rust rules for Bazel
Stars: ✭ 241 (+1105%)
Mutual labels:  bazel, bazel-rules
rules antlr
ANTLR rules for Bazel
Stars: ✭ 24 (+20%)
Mutual labels:  bazel, bazel-rules
Rules kotlin
Bazel rules for Kotlin
Stars: ✭ 235 (+1075%)
Mutual labels:  bazel, bazel-rules
rules ocaml
OCaml build rules for Bazel
Stars: ✭ 38 (+90%)
Mutual labels:  bazel, bazel-rules
Rules apple
Bazel rules to build apps for Apple platforms.
Stars: ✭ 217 (+985%)
Mutual labels:  bazel, bazel-rules
Rules k8s
This repository contains rules for interacting with Kubernetes configurations / clusters.
Stars: ✭ 222 (+1010%)
Mutual labels:  bazel, bazel-rules
rules gitops
This repository contains rules for continuous, GitOps driven Kubernetes deployments.
Stars: ✭ 112 (+460%)
Mutual labels:  bazel, bazel-rules
rules elm
Bazel rules for building web applications written in Elm
Stars: ✭ 22 (+10%)
Mutual labels:  bazel, bazel-rules

Build status

GWT Rules for Bazel

Overview

These build rules are used for building GWT applications with Bazel. Applications are compiled as .war files containing compiled JavaScript and other resources. GWT applications can also be run in Development Mode via bazel run.

Setup

To be able to use the GWT rules, you must provide bindings for the GWT jars and everything it depends on. The easiest way to do so is to add the following to your WORKSPACE file, which will give you default versions for GWT and each dependency:

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
  name = "io_bazel_rules_gwt",
  url = "https://github.com/bazelbuild/rules_gwt/archive/0.1.3.tar.gz",
  sha256 = "3f017bd2f7734e259535da0bcc75398b883dda6da6b657dfa84bd02fab0a6916",
  strip_prefix = "rules_gwt-0.1.3",
)
load("@io_bazel_rules_gwt//gwt:gwt.bzl", "gwt_repositories")
gwt_repositories()

If you want to use a different version of GWT or any of its dependencies, you must provide your own bindings. Remove the gwt_repositories() line above and add a bind rule for each of the following in your WORKSPACE:

Basic Example

Suppose you have the following directory structure for a simple GWT application:

[workspace]/
    WORKSPACE
    src/main/java/
        app/
            BUILD
            MyApp.java
            MyApp.gwt.xml
        lib/
            BUILD
            MyLib.java
        public/
            index.html

Here, MyApp.java defines the entry point to a GWT application specified by MyApp.gwt.xml which depends on another Java library MyLib.java. index.html defines the HTML page that links in the GWT application. To build this app, your src/main/java/app/BUILD can look like this:

load("@io_bazel_rules_gwt//gwt:gwt.bzl", "gwt_application")

gwt_application(
  name = "MyApp",
  srcs = glob(["*.java"]),
  resources = glob(["*.gwt.xml"]),
  modules = ["app.MyApp"],
  pubs = glob(["public/*"]),
  deps = [
    "//src/main/java/lib",
  ],
)

Now, you can build the GWT application by running bazel build src/main/java/app:MyApp. This will run the GWT compiler and place all of its output as well as index.html into bazel-bin/src/main/java/app/MyApp.war. You can also run bazel run src/main/java/app:MyApp-dev to run GWT development mode for the application. Once development mode has started, you can see the app by opening http://127.0.0.1:8888/index.html in a browser. Note that development mode assumes that all of your .java files are located under java/ or src/main/java/ - see details on the java_roots flag below if this is not the case.

For a complete example, see the example/ directory in this repository.

gwt_application

gwt_application(name, srcs, resources, modules, pubs, deps, output_root, java_roots, compiler_flags, compiler_jvm_flags, dev_flags, dev_jvm_flags):

Implicit output targets

  • <name>.war: archive containing GWT compiler output and any files passed in via pubs.
  • <name>-dev: script that can be run via bazel run to launch the app in development mode.
Attributes
name Name, required

A unique name for this rule.

srcs List of labels, optional

List of .java source files that will be compiled and passed on the classpath to the GWT compiler.

resources List of labels, optional

List of resource files that will be passed on the classpath to the GWT compiler, e.g. .gwt.xml, .ui.xml, and .css files.

modules List of strings, required

List of fully-qualified names of modules that will be passed to the GWT compiler. Usually contains a single module name corresponding to the application's .gwt.xml file.

pubs List of labels, optional

Files that will be copied directly to the output war, such as static HTML or image resources. Not interpreted by the GWT compiler.

deps List of labels, optional

List of other java_libraries on which the application depends. Both the class jars and the source jars corresponding to each library as well as their transitive dependencies will be passed to the GWT compiler's classpath. These libraries may contain other .gwt.xml, .ui.xml, etc. files as resources.

output_root String, optional

Directory in the output war in which all outputs will be placed. By default outputs are placed at the root of the war file.

java_roots List of strings, optional

Directories relative to the workspace root that form roots of the Java package hierarchy (e.g. they contain com directories). By default this includes java, javatests, src/main/java and src/test/java. If your Java files aren't under these directories, you must set this property in order for development mode to work correctly. Otherwise GWT won't be able to see your source files, so you will not see any changes reflected when refreshing dev mode.

compiler_flags List of strings, optional

Additional flags that will be passed to the GWT compiler. See here for a list of available flags.

compiler_jvm_flags List of strings, optional

Additional JVM flags that will be passed to the GWT compiler, such as -Xmx4G to increase the amount of available memory.

dev_flags List of strings, optional

Additional flags that will be passed to development mode. See here for a list of available flags.

dev_jvm_flags List of strings, optional

Additional JVM flags that will be passed to development mode, such as -Xmx4G to increase the amount of available memory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].