<dependency> <groupId>com.google.javascript</groupId> <artifactId>closure-compiler</artifactId> <version>v20160315</version> </dependency>
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <property name="closure.compiler.class.name" value="com.google.javascript.jscomp.CommandLineRunner" /> <echo message="Generate main.min.js" /> <java classname="${closure.compiler.class.name}" classpathref="maven.compile.classpath" fork="true" failonerror="true"> <arg value="--js"/> <arg value="${basedir}/src/main/webapp/js/main.js"/> <arg value="--js_output_file"/> <arg value="${basedir}/src/main/webapp/js/main.min.js" /> <arg value="--compilation_level"/> <arg value="SIMPLE_OPTIMIZATIONS"/> </java> </target> </configuration> </execution> </executions> </plugin>
而後運行發現報錯。CreateProcess error=206, ÎļþÃû»ò)չÃû 而後後面有一堆亂碼,而後通過stackoverflow查找以後 發現後面亂碼大概是「CreateProcess error=206, The filename or extension is too long」javascript
「在Windows下命令行支持的字符串長度是有限制的,在計算機上運行 Microsoft Windows XP 或更高版本,能夠在命令提示符下使用的字符串的最大的長度 8191 個字符。 在運行 Microsoft Windows 2000 或 Windows NT 4.0 的計算機上, 將最大長度能夠在命令提示符下使用的字符串的爲 2047 個字符。」html
我也弄不明白爲啥個人antrun命令過長,上面的arg參數那麼少。而後我使用 mvn package –X 打印詳細信息。發現有個classpathref=」maven.compile.classpath」回去打印全部lib全部jar包來運行命令。java
而不是指定closure-complie這個jar包運行。web
在maven中知道能夠直接指定maven 依賴的closure-complie.jar包,參照以下地址:apache
http://maven.apache.org/plugins/maven-antrun-plugin/examples/classpaths.htmlapp
因此修改上面pom.xml代碼:webapp
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>generate-sources</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <property name="closure.compiler.class.name"value="com.google.javascript.jscomp.CommandLineRunner" /> <echo message="Generate main.min.js" /> <path id="maven.lib.dep" path="${com.google.javascript:closure-compiler:jar}"/> <java classname="${closure.compiler.class.name}" classpathref="maven.lib.dep" fork="true" failonerror="true"> <arg value="--js"/> <arg value="${basedir}/src/main/webapp/js/main.js"/> <arg value="--js_output_file"/> <arg value="${basedir}/src/main/webapp/js/main.min.js" /> <arg value="--compilation_level"/> <arg value="SIMPLE_OPTIMIZATIONS"/> </java> </target> </configuration> </execution> </executions> </plugin>
指定classpathref參數maven