README
1 /*
2 * Copyright 2009 The Closure Compiler Authors.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 //
18 // Contents
19 //
20
21 The Closure Compiler performs checking, instrumentation, and
22 optimizations on JavaScript code. The purpose of this README is to
23 explain how to build and run the Closure Compiler.
24
25 The Closure Compiler requires Java 6 or higher.
26 http://www.java.com/
27
28
29 //
30 // Building The Closure Compiler
31 //
32
33 There are three ways to get a Closure Compiler executable.
34
35 1) Use one we built for you.
36
37 Pre-built Closure binaries can be found at
38 http://code.google.com/p/closure-compiler/downloads/list
39
40
41 2) Check out the source and build it with Apache Ant.
42
43 First, check out the full source tree of the Closure Compiler. There
44 are instructions on how to do this at the project site.
45 http://code.google.com/p/closure-compiler/source/checkout
46
47 Apache Ant is a cross-platform build tool.
48 http://ant.apache.org/
49
50 At the root of the source tree, there is an Ant file named
51 build.xml. To use it, navigate to the same directory and type the
52 command
53
54 ant jar
55
56 This will produce a jar file called "build/compiler.jar".
57
58
59 3) Check out the source and build it with Eclipse.
60
61 Eclipse is a cross-platform IDE.
62 http://www.eclipse.org/
63
64 Under Eclipse's File menu, click "New > Project ..." and create a
65 "Java Project." You will see an options screen. Give the project a
66 name, select "Create project from existing source," and choose the
67 root of the checked-out source tree as the existing directory. Verify
68 that you are using JRE version 6 or higher.
69
70 Eclipse can use the build.xml file to discover rules. When you
71 navigate to the build.xml file, you will see all the build rules in
72 the "Outline" pane. Run the "jar" rule to build the compiler in
73 build/compiler.jar.
74
75
76 //
77 // Running The Closure Compiler
78 //
79
80 Once you have the jar binary, running the Closure Compiler is straightforward.
81
82 On the command line, type
83
84 java -jar compiler.jar
85
86 This starts the compiler in interactive mode. Type
87
88 var x = 17 + 25;
89
90 then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
91 and "Enter" again. The Compiler will respond:
92
93 var x=42;
94
95 The Closure Compiler has many options for reading input from a file,
96 writing output to a file, checking your code, and running
97 optimizations. To learn more, type
98
99 java -jar compiler.jar --help
100
101 You can read more detailed documentation about the many flags at
102 http://code.google.com/closure/compiler/docs/gettingstarted_app.html
103
104
105 //
106 // Compiling Multiple Scripts
107 //
108
109 If you have multiple scripts, you should compile them all together with
110 one compile command.
111
112 java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
113
114 The Closure Compiler will concatenate the files in the order they're
115 passed at the command line.
116
117 If you need to compile many, many scripts together, you may start to
118 run into problems with managing dependencies between scripts. You
119 should check out the Closure Library. It contains functions for
120 enforcing dependencies between scripts, and a tool called calcdeps.py
121 that knows how to give scripts to the Closure Compiler in the right
122 order.
123
124 http://code.google.com/p/closure-library/
125
126 //
127 // Licensing
128 //
129
130 Unless otherwise stated, all source files are licensed under
131 the Apache License, Version 2.0.
132
133
134 -----
135 Code under:
136 src/com/google/javascript/rhino
137 test/com/google/javascript/rhino
138
139 URL: http://www.mozilla.org/rhino
140 Version: 1.5R3, with heavy modifications
141 License: Netscape Public License and MPL / GPL dual license
142
143 Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
144 implementation of JavaScript for the JVM. The JavaScript parser and
145 the parse tree data structures were extracted and modified
146 significantly for use by Google's JavaScript compiler.
147
148 Local Modifications: The packages have been renamespaced. All code not
149 relevant to parsing has been removed. A JsDoc parser and static typing
150 system have been added.
151
152
153 -----
154 Code in:
155 lib/rhino
156
157 Rhino
158 URL: http://www.mozilla.org/rhino
159 Version: Trunk
160 License: Netscape Public License and MPL / GPL dual license
161
162 Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
163
164 Local Modifications: Minor changes to parsing JSDoc that usually get pushed
165 up-stream to Rhino trunk.
166
167
168 -----
169 Code in:
170 lib/args4j.jar
171
172 Args4j
173 URL: https://args4j.dev.java.net/
174 Version: 2.0.16
175 License: MIT
176
177 Description:
178 args4j is a small Java class library that makes it easy to parse command line
179 options/arguments in your CUI application.
180
181 Local Modifications: None.
182
183
184 -----
185 Code in:
186 lib/guava.jar
187
188 Guava Libraries
189 URL: http://code.google.com/p/guava-libraries/
190 Version: 15.0
191 License: Apache License 2.0
192
193 Description: Google's core Java libraries.
194
195 Local Modifications: None.
196
197
198 -----
199 Code in:
200 lib/jsr305.jar
201
202 Annotations for software defect detection
203 URL: http://code.google.com/p/jsr-305/
204 Version: svn revision 47
205 License: BSD License
206
207 Description: Annotations for software defect detection.
208
209 Local Modifications: None.
210
211
212 -----
213 Code in:
214 lib/jarjar.jar
215
216 Jar Jar Links
217 URL: http://jarjar.googlecode.com/
218 Version: 1.1
219 License: Apache License 2.0
220
221 Description:
222 A utility for repackaging Java libraries.
223
224 Local Modifications: None.
225
226
227 ----
228 Code in:
229 lib/junit.jar
230
231 JUnit
232 URL: http://sourceforge.net/projects/junit/
233 Version: 4.10
234 License: Common Public License 1.0
235
236 Description: A framework for writing and running automated tests in Java.
237
238 Local Modifications: None.
239
240
241 ---
242 Code in:
243 lib/protobuf-java.jar
244
245 Protocol Buffers
246 URL: http://code.google.com/p/protobuf/
247 Version: 2.4.1
248 License: New BSD License
249
250 Description: Supporting libraries for protocol buffers,
251 an encoding of structured data.
252
253 Local Modifications: None
254
255
256 ---
257 Code in:
258 lib/ant.jar
259 lib/ant-launcher.jar
260
261 URL: http://ant.apache.org/bindownload.cgi
262 Version: 1.8.1
263 License: Apache License 2.0
264 Description:
265 Ant is a Java based build tool. In theory it is kind of like "make"
266 without make's wrinkles and with the full portability of pure java code.
267
268 Local Modifications: None
269
270
271 ---
272 Code in:
273 lib/json.jar
274 URL: http://json.org/java/index.html
275 Version: JSON version 20090211
276 License: MIT license
277 Description:
278 JSON is a set of java files for use in transmitting data in JSON format.
279
280 Local Modifications: None
281
282 ---
283 Code in
284 lib/mockito-core.jar
285 URL: https://code.google.com/p/mockito
286 Version: 1.9.5
287 License: MIT license
288 Description:
289 Mockito is an open source testing framework for Java. The framework allows the creation of Test Double objects (called "Mock Objects") in automated unit tests for the purpose of Test-driven Development (TDD) or Behavior Driven Development (BDD).
290
291 Local Modifications: None
292
293 ---
294 Code in
295 lib/objenesis.ar
296 URL: http://objenesis.org
297 Version: 1.2
298 License: Apache 2.0 license
299 Description:
300 Depended by lib/mockito-core.jar, not used directly.
301
302 Local Modifications: None
303
304 ---
305 Code in:
306 tools/maven-ant-tasks-2.1.3.jar
307 URL: http://maven.apache.org
308 Version 2.1.3
309 License: Apache License 2.0
310 Description:
311 Maven Ant tasks are used to manage dependencies and to install/deploy to
312 maven repositories.
313
314 Local Modifications: None
315