所以我正在尝试一些我认为很简单的事情,我基本上希望Maven在发动战争之前为我最小化我的所有js和css文件。我的插件如下所示:
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<version>1.0.0</version>
<configuration>
<manifestLocation>META-INF</manifestLocation>
<instructions>
<Export-Package>!test.impl,test*</Export-Package>
<Import-Package>*</Import-Package>
<!--
add ,plugin.xml if it's present i.e.
src/main/resources,plugin.xml
-->
<Include-Resource>src/main/resources</Include-Resource>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<nosuffix>true</nosuffix>
</configuration>
</plugin>
问题在于,YUI插件确实可以正确缩小文件,但是在战争爆发之前,它看起来像是从我的主源目录中复制了所有文件,从而抹去了YUI插件所做的更改。
我通过以下方式调用maven:mvn compile war:war
。我已经使用不同的设置玩了一段时间了,但是到目前为止我还没有找到解决这个问题的方法。
我想要的是战争刚刚从src目录复制了所需文件之后,它将运行YUI插件,但是我尝试了YUI插件上所有阶段的排列,但这似乎没有任何效果区别。
我已经四处搜寻,但是到目前为止,我所读的几乎所有内容似乎都在暗示着,我应该只需要像以前一样将YUI插件放到那里,一切就可以神奇地工作。到目前为止,我似乎还没有发现魔术。
参考方案
发生的是,上面的配置在process-resources阶段运行压缩器,但随后package阶段用原始文件覆盖了这些文件。
通过将阶段更改为打包,它应该可以工作:
<execution>
<phase>package</phase>
<goals>
<goal>compress</goal>
</goals>
现在,在将文件复制到目标文件之后进行压缩,以构建WAR内容。
发生这种情况的原因是,仅压缩文件而不将其串联或使用后缀重命名并不是该插件最常见的用例。
通常,我们只想将文件压缩和连接成一个文件,然后给它起一个新的名字。
新名称通常类似于originalname-min.css / original.name-min.js,其中.min是后缀,因此删除上面配置中的nosuffix选项也可以。
编辑:日志示例
[INFO] --- yuicompressor-maven-plugin:1.1:compress (default) @ yui-compressor-test -
[INFO] prettify.css (817b) -> prettify.css (617b)[75%]
[INFO] total input (1510b) -> output (1134b)[75%]
Maven:从jar工件中排除生成的源 - javaDuplicate,但没有答案,无法评论背景信息:我有一个模块,该模块使用xmlbeans-maven-plugin从xsd生成Java源文件并将其编译到其自己的jar中。这可以正常工作,并使用Java源代码创建一个module1 / target / generated-sources文件夹。该模块已构建,但生成的源包含在jar中,这是不必要的,因为xml…
通过Maven编译器插件不会发生有限的包含和排除 - java我正在使用3.6.0版的maven编译器插件,在此我们只想在特定文件夹中编译一个文件,而在该位置编译所有其他文件。例如:在文件夹应用程序中有14个文件,从那我只希望编译1个文件,但它编译了所有文件,如果我要排除,则它也不起作用。 <sourceDirectory>${basedir}/../src/java</sourceDirectory…
缺少Jacoco代码覆盖率和IncompatibleClassChangeError - java我有一个带有一些Arquillian测试(包括Drone / Graphene测试)的Maven项目。当我使用Maven构建项目时,所有使用Graphene和Drone或Warp的Arquillian测试都将失败,并出现以下异常Running de.mmo.arq.model.diverses.stammdaten.geldinstitut.Geldinst…
Java中的<<或>>>是什么意思? - javaThis question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…
Maven的Shade插件产生的罐子之间有什么区别? - java在我的Maven项目中,我尝试使用maven-shade-plugin在运行mvn package时生成一个超级jar。结果,我的目标目录中出现三个jar:original-hello-world-0.1.0-SNAPSHOT.jar hello-world-0.1.0-SNAPSHOT.jar hello-world-0.1.0-SNAPSHOT-shad…