我想建立一个流程,我可以为我的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
答案 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
之前,我使用另一个任务管理器Gradle
(http://www.gradle.org)设置了构建工具链,这是Java
个项目的常用项,这是因为closure-compiler.jar本身就是一个Java项目。这非常好用,但我终于注意到Grunt比Gradle有更多基于Web项目的支持。由于我相信正确的工作正确的工具,我的结论是:使用Grunt for Javascript-Projects,Gradle for Java / JVM。
答案 1 :(得分:1)
这取决于您的Linux发行版。通常,它已在软件包存储库中提供。
例如对于CentOS 7,您将运行:
yum install https://extras.getpagespeed.com/release-el7-latest.rpm
yum install closure-compiler
然后只需通过closure-compiler <arguments>
如果您不使用打包好的发行版,请参阅下一个答案。
.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