在Linux上设置Closure Compiler的好方法是什么?或者,Java .jar应该在Linux上的哪个位置?

时间:2013-08-03 03:33:14

标签: java linux unix libraries google-closure-compiler

我想建立一个流程,我可以为我的webapps生成缩小和优化的JS,作为使用git将更新的代码推送到Web服务器的过程的一部分。

运行它非常简单:java -jar ./compiler.jar script.js

当然,如果我有十个项目,我不想要十个compiler.jar

如果我坚持下去:/usr/local/lib/compiler.jar我的电话看起来很愚蠢:

java -jar /usr/local/lib/compiler.jar script.js

将它转储到~更有意义,就像我对其他一切无处可去的东西一样。它只是感觉草率。

是否有一些我可以粘贴我的jar的目录,以便我可以更轻松地运行它们,而不是我必须为我想要的每个jar设置(符号链接)shell脚本(或者可能更好的shell命令别名)使用?

例如,不应该有一个系统,我将我的jar放在全局指定的java lib目录中,之后我可以调用java closure script.js

修改:我尝试将其放入我在此处找到的jre/lib/ext,但它不起作用:

$ find /usr/lib | grep jre/lib/ext                         
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64/jre/lib/ext
.... bunch of other jar files here
$ cp ~/compiler.jar /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64/jre/lib/ext
$ java -jar compiler.jar script.js
Error: Unable to access jarfile compiler.jar

5 个答案:

答案 0 :(得分:1)

我的回答更多的是建议你不要重新发明轮子,希望这会让你免于问题,你没有参与其中 - 但是,因为你已经在自己的意见中建议可能包括每个项目中的罐子。 : - )

我建议将jar放在每个项目中并使其自包含或更好:在每个项目中运行一个安装脚本,从远程位置获取jar。

您可以手动编写安装脚本脚本,或者更进一步使用任务运行器来创建自己的构建工具链,您可以在多个项目中重复使用它。

我们将项目结构转换为Grunt任务(http://gruntjs.com)Grunt包含一个闭包编译器插件(以及更多插件,例如sass)。每个项目都包含一个Grunt配置文件,该文件指定所有任务,例如test,build,您可以在给定项目上调用它。所以你必须在你的机器上安装Grunt一次,Grunt将为你的任务提供所有任务,并负责下载closure-compiler.jar并调用closure-compiler。

即便如此,如果你现在想的话:“我只需要封闭编译器”最终你可能需要另一个工具B并启动工具B的bash脚本。我建议你花更多的时间学习,比如Grunt,并使用社区的工作。

附注:在我们使用Grunt之前,我使用另一个任务管理器Gradlehttp://www.gradle.org)设置了构建工具链,这是Java个项目的常用项,这是因为closure-compiler.jar本身就是一个Java项目。这非常好用,但我终于注意到Grunt比Gradle有更多基于Web项目的支持。由于我相信正确的工作正确的工具,我的结论是:使用Grunt for Javascript-Projects,Gradle for Java / JVM。

答案 1 :(得分:1)

在Linux上设置Closure Compiler的好方法是什么?

这取决于您的Linux发行版。通常,它已在软件包存储库中提供。

例如对于CentOS 7,您将运行:

yum install https://extras.getpagespeed.com/release-el7-latest.rpm
yum install closure-compiler

然后只需通过closure-compiler <arguments>

对其进行调用

如果您不使用打包好的发行版,请参阅下一个答案。

或者,Java .jar应该放在Linux上的什么地方?

.jar文件的系统软件包通常进入/usr/share/java/(至少在基于RedHat的系统中如此)。此外,应根据FHS标准将手动安装或下载的软件放入/usr/local

根据以上内容,您可以确定/usr/local/share/java/应该是放置手动下载的.jar文件的适当位置,如果您希望它们可以供多个用户/项目访问。

答案 2 :(得分:0)

如果直接使用java命令,则必须提供相关jar的路径。将jar放在一个地方并创建一个处理调用和jar路径的shell脚本可能更容易。

答案 3 :(得分:0)

我使用别名,我认为这比使用shell脚本在某处实现大致相同的事情更有效。

alias closure='java -jar /opt/closure-compiler/compiler.jar'

使用中:

closure --js i.js --js_output_file i.min.js

答案 4 :(得分:0)

我也会把它放在每个项目中。这是为了使它们自成一体。这是我的代码:

cd /path/to/your/project
sudo apt-get install -y default-jre
wget "https://dl.google.com/closure-compiler/compiler-latest.tar.gz"
tar -xf compiler-latest.tar.gz
rm compiler-latest.tar.gz README.md COPYING
mv closure-compiler* closure-compiler.jar # rename for easier use