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

问题描述 投票:1回答:5

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

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

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

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

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

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

是否有一些目录,我可以粘贴我的罐子,以便我可以更容易地运行它们,而不是我必须为我想要使用的每个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
java linux unix libraries google-closure-compiler
5个回答
1
投票

我的回答是更多的建议,你不要重新发明轮子,这有希望将你从问题中解脱出来,你没有参与其中 - 但是,因为你已经在自己的评论中建议将jar包括在内每个项目。 :-)

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

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

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

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

旁注:在我们使用Grunt之前,我使用另一个taskrunner Gradlehttp://www.gradle.org)设置了build-toolchain,这是Java项目的流行,其原因是closure-compiler.jar本身就是一个Java项目。这非常好用,但我终于注意到Grunt比Gradle有更多基于Web项目的支持。因为我相信正确的工作正确的工具,我的结论是:使用Grunt for Javascript-Projects,Gradle for Java / JVM。


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文件的适当位置。


0
投票

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


0
投票

我使用了一个别名,我觉得它比在某个地方实现大致相同的shell脚本更有效。

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

正在使用:

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

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
© www.soinside.com 2019 - 2024. All rights reserved.