在Maven将webapp资源复制到package
目标内的war目录后,我该怎么办?我想在将webapp资源复制到目标的war目录之后做一些事情,但就在它最终将所有内容存档到WAR文件之前。
答案 0 :(得分:9)
您遇到问题的原因是因为复制webapp资源是由war plugin完成的,它与构建战争的呼吸相同。它不是一个不同的生命周期阶段,甚至是同一阶段的两个不同的行动。它是war:war goal的所有部分。
但是有一种解决方法。如果您将war:exploded绑定到早期阶段,例如prepare-package
,那么它将构建您的爆炸式网络应用程序,然后您可以在此之后添加一些内容来修改为展开目录构建的文件。然后war:war
将打包修改后的展开目录。 (对于较新版本的war插件,我相信您需要设置useCache
属性才能获得所需的行为,尽管这似乎不是真正的原因,但要小心。)
答案 1 :(得分:7)
我只需要做同样的事情所以这里是egervari的一个例子来展示Ryan Stewart所说的话。
(这使用YUI Compressor Maven Mojo自动缩小js文件。)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
<warName>${warName}</warName>
<useCache>true</useCache>
</configuration>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>**/*.min.js</exclude>
<exclude>**/*.properties</exclude>
</excludes>
<nosuffix>true</nosuffix>
</configuration>
</plugin>
</plugins>
</build>
答案 2 :(得分:-1)
如构建lifecycle
中所述prepare-package 执行准备包所需的任何操作 在实际包装之前。这通常导致打开包装, 处理版的包。 (Maven 2.1及以上)
包获取已编译的代码并将其打包为可分发的格式,例如 JAR。
您可能想要根据您的pom执行方式将您的目标绑定到这些目标之一。
我没有尝试过这个,因此无法说出哪一个有权威。