This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Jun 14, 2024. It is now read-only.

Repository files navigation

Build status

📣 [Unmaintained] GWT Rules for Bazel

Warning

Due to an absence of any maintainers, this repository is archived and currently unmaintained.

We discourage any new dependencies on the contents of this repository.

If you, or your organization, are interested in revitalizing this project by taking over its maintenance, we welcome your initiative. To discuss the process of un-archiving and assuming ownership of this repository, please reach out to us via email at bazel-contrib@googlegroups.com or join the conversation on our Slack workspace in the #rules channel. You can sign up for Slack access at https://slack.bazel.build.

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
nameName, required

A unique name for this rule.

srcsList of labels, optional

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

resourcesList 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.

modulesList 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.

pubsList 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.

depsList 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_rootString, 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_rootsList 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_flagsList of strings, optional

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

compiler_jvm_flagsList 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_flagsList of strings, optional

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

dev_jvm_flagsList of strings, optional

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

About

Bazel rules for GWT

Topics

Resources

Contributing

Security policy

Stars

18 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages