mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-02 20:02:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			262 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			262 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/*
 | 
						|
 * Copyright 2009 Google Inc.
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
 | 
						|
//
 | 
						|
// Contents
 | 
						|
//
 | 
						|
 | 
						|
The Closure Compiler performs checking, instrumentation, and
 | 
						|
optimizations on JavaScript code. The purpose of this README is to
 | 
						|
explain how to build and run the Closure Compiler.
 | 
						|
 | 
						|
The Closure Compiler requires Java 6 or higher.
 | 
						|
http://www.java.com/
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
// Building The Closure Compiler
 | 
						|
//
 | 
						|
 | 
						|
There are three ways to get a Closure Compiler executable.
 | 
						|
 | 
						|
1) Use one we built for you.
 | 
						|
 | 
						|
Pre-built Closure binaries can be found at
 | 
						|
http://code.google.com/p/closure-compiler/downloads/list
 | 
						|
 | 
						|
 | 
						|
2) Check out the source and build it with Apache Ant.
 | 
						|
 | 
						|
First, check out the full source tree of the Closure Compiler. There
 | 
						|
are instructions on how to do this at the project site.
 | 
						|
http://code.google.com/p/closure-compiler/source/checkout
 | 
						|
 | 
						|
Apache Ant is a cross-platform build tool.
 | 
						|
http://ant.apache.org/
 | 
						|
 | 
						|
At the root of the source tree, there is an Ant file named
 | 
						|
build.xml. To use it, navigate to the same directory and type the
 | 
						|
command
 | 
						|
 | 
						|
ant jar
 | 
						|
 | 
						|
This will produce a jar file called "build/compiler.jar".
 | 
						|
 | 
						|
 | 
						|
3) Check out the source and build it with Eclipse.
 | 
						|
 | 
						|
Eclipse is a cross-platform IDE.
 | 
						|
http://www.eclipse.org/
 | 
						|
 | 
						|
Under Eclipse's File menu, click "New > Project ..." and create a
 | 
						|
"Java Project."  You will see an options screen. Give the project a
 | 
						|
name, select "Create project from existing source," and choose the
 | 
						|
root of the checked-out source tree as the existing directory. Verify
 | 
						|
that you are using JRE version 6 or higher.
 | 
						|
 | 
						|
Eclipse can use the build.xml file to discover rules. When you
 | 
						|
navigate to the build.xml file, you will see all the build rules in
 | 
						|
the "Outline" pane. Run the "jar" rule to build the compiler in
 | 
						|
build/compiler.jar.
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
// Running The Closure Compiler
 | 
						|
//
 | 
						|
 | 
						|
Once you have the jar binary, running the Closure Compiler is straightforward.
 | 
						|
 | 
						|
On the command line, type
 | 
						|
 | 
						|
java -jar compiler.jar
 | 
						|
 | 
						|
This starts the compiler in interactive mode. Type
 | 
						|
 | 
						|
var x = 17 + 25;
 | 
						|
 | 
						|
then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
 | 
						|
and "Enter" again. The Compiler will respond:
 | 
						|
 | 
						|
var x=42;
 | 
						|
 | 
						|
The Closure Compiler has many options for reading input from a file,
 | 
						|
writing output to a file, checking your code, and running
 | 
						|
optimizations. To learn more, type
 | 
						|
 | 
						|
java -jar compiler.jar --help
 | 
						|
 | 
						|
You can read more detailed documentation about the many flags at
 | 
						|
http://code.google.com/closure/compiler/docs/gettingstarted_app.html
 | 
						|
 | 
						|
 | 
						|
//
 | 
						|
// Compiling Multiple Scripts
 | 
						|
//
 | 
						|
 | 
						|
If you have multiple scripts, you should compile them all together with
 | 
						|
one compile command.
 | 
						|
 | 
						|
java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
 | 
						|
 | 
						|
The Closure Compiler will concatenate the files in the order they're
 | 
						|
passed at the command line.
 | 
						|
 | 
						|
If you need to compile many, many scripts together, you may start to
 | 
						|
run into problems with managing dependencies between scripts. You
 | 
						|
should check out the Closure Library. It contains functions for
 | 
						|
enforcing dependencies between scripts, and a tool called calcdeps.py
 | 
						|
that knows how to give scripts to the Closure Compiler in the right
 | 
						|
order.
 | 
						|
 | 
						|
http://code.google.com/p/closure-library/
 | 
						|
 | 
						|
//
 | 
						|
// Licensing
 | 
						|
//
 | 
						|
 | 
						|
Unless otherwise stated, all source files are licensed under
 | 
						|
the Apache License, Version 2.0.
 | 
						|
 | 
						|
 | 
						|
-----
 | 
						|
Code under:
 | 
						|
src/com/google/javascript/rhino
 | 
						|
test/com/google/javascript/rhino
 | 
						|
 | 
						|
URL: http://www.mozilla.org/rhino
 | 
						|
Version:  1.5R3, with heavy modifications
 | 
						|
License:  Netscape Public License and MPL / GPL dual license
 | 
						|
 | 
						|
Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
 | 
						|
implementation of JavaScript for the JVM.  The JavaScript parser and
 | 
						|
the parse tree data structures were extracted and modified
 | 
						|
significantly for use by Google's JavaScript compiler.
 | 
						|
 | 
						|
Local Modifications: The packages have been renamespaced. All code not
 | 
						|
relavant to parsing has been removed. A JSDoc parser and static typing
 | 
						|
system have been added.
 | 
						|
 | 
						|
 | 
						|
-----
 | 
						|
Code in:
 | 
						|
lib/libtrunk_rhino_parser_jarjared.jar
 | 
						|
 | 
						|
Rhino
 | 
						|
URL: http://www.mozilla.org/rhino
 | 
						|
Version:  Trunk
 | 
						|
License:  Netscape Public License and MPL / GPL dual license
 | 
						|
 | 
						|
Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
 | 
						|
 | 
						|
Local Modifications: None. We've used JarJar to renamespace the code
 | 
						|
post-compilation. See:
 | 
						|
http://code.google.com/p/jarjar/
 | 
						|
 | 
						|
 | 
						|
-----
 | 
						|
Code in:
 | 
						|
lib/args4j_deploy.jar
 | 
						|
 | 
						|
Args4j
 | 
						|
URL: https://args4j.dev.java.net/
 | 
						|
Version: 2.0.9
 | 
						|
License: MIT
 | 
						|
 | 
						|
Description:
 | 
						|
args4j is a small Java class library that makes it easy to parse command line
 | 
						|
options/arguments in your CUI application.
 | 
						|
 | 
						|
Local Modifications: None.
 | 
						|
 | 
						|
 | 
						|
-----
 | 
						|
Code in:
 | 
						|
lib/google_common_deploy.jar
 | 
						|
 | 
						|
Guava Libraries
 | 
						|
URL: http://code.google.com/p/guava-libraries/
 | 
						|
Version:  Trunk
 | 
						|
License: Apache License 2.0
 | 
						|
 | 
						|
Description: Google's core Java libraries.
 | 
						|
 | 
						|
Local Modifications: None.
 | 
						|
 | 
						|
 | 
						|
-----
 | 
						|
Code in:
 | 
						|
lib/hamcrest-core-1.1.jar
 | 
						|
 | 
						|
Hamcrest
 | 
						|
URL: http://code.google.com/p/hamcrest
 | 
						|
License: BSD
 | 
						|
License File: LICENSE
 | 
						|
 | 
						|
Description:
 | 
						|
Provides a library of matcher objects (also known as constraints or
 | 
						|
predicates) allowing 'match' rules to be defined declaratively, to be used in
 | 
						|
other frameworks. Typical scenarios include testing frameworks, mocking
 | 
						|
libraries and UI validation rules.
 | 
						|
 | 
						|
Local modifications:
 | 
						|
The original jars contained both source code and compiled classes.
 | 
						|
 | 
						|
hamcrest-core-1.1.jar just contains the compiled classes.
 | 
						|
 | 
						|
 | 
						|
----
 | 
						|
Code in:
 | 
						|
lib/junit.jar
 | 
						|
 | 
						|
JUnit
 | 
						|
URL:  http://sourceforge.net/projects/junit/
 | 
						|
Version:  4.5
 | 
						|
License:  Common Public License 1.0
 | 
						|
 | 
						|
Description: A framework for writing and running automated tests in Java.
 | 
						|
 | 
						|
Local Modifications: None.
 | 
						|
 | 
						|
 | 
						|
---
 | 
						|
Code in:
 | 
						|
lib/protobuf_deploy.jar
 | 
						|
 | 
						|
Protocol Buffers
 | 
						|
URL: http://code.google.com/p/protobuf/
 | 
						|
Version: 2.2.0a
 | 
						|
License: New BSD License
 | 
						|
 | 
						|
Description: Supporting libraries for protocol buffers,
 | 
						|
an encoding of structured data.
 | 
						|
 | 
						|
Local Modifications: None
 | 
						|
 | 
						|
 | 
						|
---
 | 
						|
Code in:
 | 
						|
lib/ant_deploy.jar
 | 
						|
 | 
						|
URL: http://ant.apache.org/bindownload.cgi
 | 
						|
Version: 1.6.5
 | 
						|
License: Apache License 2.0
 | 
						|
Description:
 | 
						|
  Ant is a Java based build tool. In theory it is kind of like "make"
 | 
						|
  without make's wrinkles and with the full portability of pure java code.
 | 
						|
 | 
						|
Local Modifications:
 | 
						|
  Modified apache-ant-1.6.5/bin/ant to look in the ant.runfiles directory
 |