gpt4 book ai didi

maven - 进行 war 时,文件在Maven项目中被覆盖

转载 作者:行者123 更新时间:2023-12-04 13:17:50 28 4
gpt4 key购买 nike

我正在使用Maven构建一个Web应用程序项目,并且包装设置为“war”。我还使用YUI压缩程序插件来压缩webapp目录中的javascript代码。我已经像这样设置了YUI压缩器:

<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.3.0</version>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/ext-2.0/**/*.js</exclude>
<exclude>**/lang/*.js</exclude>
<exclude>**/javascripts/flot/*.js</exclude>
<exclude>**/javascripts/jqplot/*.js</exclude>
</excludes>
<nosuffix>true</nosuffix>
<force>true</force>
<jswarn>false</jswarn>
</configuration>
</plugin>

如果我这样做:mvn process-resources,则src/main/webapp将被复制到target/webapp-1.0/目录,并且压缩了Javacripts。但是,当我运行mvn install时,所有压缩的javascript都会被覆盖,显然打包过程会在构建war文件之前一次从main/webapp复制内容。

我该如何解决?

最佳答案

正如您所注意到的,直到war插件在打包阶段执行之前,/src/main/webapp dir(又名warSourceDirectory)内容才被复制到用于打包的项目dir中。当war插件完成后,归档文件便已建立;修改这些资源为时已晚。如果要将要压缩的.js文件移到另一个目录(/src/main/webapp之外),则可以执行以下操作。

为了进行测试,我创建了一个${basedir}/src/play目录,其中包含几个文件。我在示例中使用了resource插件;您将用您需要的YUI压缩器插件配置替换该配置,只需将<webResource>元素添加到war插件配置中,如下所示;有关更多信息,请参见war plugin examples。我的 war 最终在我想要它们的地方出现了附加文件。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>process-resources</phase>
<goals><goal>copy-resources</goal></goals>
<configuration>
<outputDirectory>${project.build.directory}/tmpPlay</outputDirectory>
<resources>
<resource>
<directory>${project.basedir}/src/play</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<executions>
<execution>
<id>default-war</id>
<configuration>
<webResources>
<resource>
<directory>${project.build.directory}/tmpPlay</directory>
<targetPath>WEB-INF/yourLocationHere</targetPath>
<includes>
<include>**/*</include>
</includes>
</resource>
</webResources>
</configuration>
</execution>
</executions>
</plugin>

关于maven - 进行 war 时,文件在Maven项目中被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133485/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com